16

是否有必要为 MySQL 数据库中的主键声明“NOT NULL”约束?主键不能有 NULL 值,因为它无论如何都会自动递增并自动填充字段记录。那么我是否正确地说这意味着我可以删除主键的“NOT NULL”约束?

4

4 回答 4

18

(正如您已标记您的问题mysql。)在 MySQL 中,您不必明确地这样做。从手册

APRIMARY KEY是一个唯一索引,其中所有键列都必须定义为NOT NULL。如果它们没有显式声明为NOT NULL,MySQL 会隐含地(并且默默地)声明它们。

当然,仅仅因为您不必这样做并不意味着您可能不想为了清楚起见等。

于 2012-05-05T14:47:58.883 回答
2

是和否您可以删除“Not null”,但这不会删除约束。就我个人而言,我会把它们留在里面,你把它们拿出来没有任何价值。

于 2012-05-05T14:56:25.307 回答
0

主键不得包含可为空的列。auto_increment不是检查约束,(而是默认约束),因此not null无论是否存在auto_increment. not null在 mysql 中创建主键表时不必键入,因为引擎会自动添加此约束。

于 2012-05-05T15:03:26.227 回答
0

我们不需要明确声明该列不为空,因为主键约束使该列不为空。我已经检查了Oracle。

于 2015-12-01T14:43:39.930 回答