【问题标题】:What's the point of adding NOT NULL to primary key field in MySQL?在 MySQL 的主键字段中添加 NOT NULL 有什么意义?
【发布时间】:2010-08-17 13:47:20
【问题描述】:

NOT NULL 添加到主键 字段有什么意义?主键已经不为空 + 唯一

这是一个例子:

CREATE TABLE student (
  id int(11) AUTO_INCREMENT NOT NULL,
  name varchar(255),
  PRIMARY KEY(id)
)

为什么不这样定义呢:

CREATE TABLE student (
  id int(11) AUTO_INCREMENT,
  name varchar(255),
  PRIMARY KEY(id)
)

【问题讨论】:

    标签: mysql database primary-key


    【解决方案1】:

    它们是一样的。主键得到NOT NULL自动

    【讨论】:

    • soo 为什么要加 NOT NULL??
    • @Yosef 这只是风格问题。并且mysqldump 在转储表时添加此NOT NULL,因为在 mysql 中允许 NULL 的错误。
    【解决方案2】:

    您在问,为什么人们在不必要的时候还要添加 NOT NULL?只是因为它的风格很好,我猜。并让读者明白。

    【讨论】:

      【解决方案3】:

      NULL 不等同于NULL(因为NULL 表示未知或不存在的值),因此您将被允许拥有多个以NULL 为id 的记录,即使有一个主键/ 定义了唯一约束,因此使用NOT NULL。如果 MySql 甚至允许您在可为空的字段上定义主键。

      此外,由于主键经常用于其他表的外键中,因此具有一个或多个 NULL 值是没有意义的。

      【讨论】:

      猜你喜欢
      • 2019-05-30
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 2017-07-03
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 2011-03-10
      相关资源
      最近更新 更多