为什么主键不能包含空值?

avi*_*dey 3 mysql

我已经读过mysql在主键上放置了一个非null的约束,但是唯一键允许列的一个空值.那么为什么主键也不允许空值?

vel*_*ity 7

PRIMARY KEY列等效于UNIQUE和NOT NULL,默认情况下是索引列.
它应该是UNIQUE,因为主键标识表中的行,因此2个不同的行不应具有相同的键.
另外,主键可以在其他表中使用FOREIGN KEY,这就是为什么它不能为NULL,以便另一个表可以在引用的表中查找行.

例如:

CREATE person{   
   id INT PRIMARY KEY,  -- equals UNIQUE NOT NULL   
   name VARCHAR(20)   
};   

CREATE family{   
   id INT PRIMARY KEY,  -- equals UNIQUE NOT NULL   
   menber_id INT FOREIGN KEY REFERENCE person(id)   
};   
Run Code Online (Sandbox Code Playgroud)