【问题标题】:mysql primary key null valuemysql主键空值
【发布时间】:2018-06-28 18:30:17
【问题描述】:

我读到主键应该是唯一的而不是空的。现在,当我以depid 作为主键创建表checking 时,根据我的说法,表描述是这样说的:Null 列值NO 表示depid 不能是Null,但在同时Default 列值Null 表示默认为Null

mysql> desc checking;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| depid | int(11) | NO   | PRI | NULL    |       |
| deppp | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.05 sec)

mysql> insert into checking values(1,2);
Query OK, 1 row affected (0.12 sec)

mysql> insert into checking(deppp) values(1);
ERROR 1364 (HY000): Field 'depid' doesn't have a default value

如果是这样,为什么最后一个查询会产生错误?

编辑一旦主键列被标记为Auto Increment,错误就会得到解决。但这仍然不能解释为什么 Default 列显示 Null 作为主键列。

【问题讨论】:

标签: mysql database


【解决方案1】:

我认为您忘记将“自动增量”添加到您的主键,因此没有任何附加值。像这样创建你的表:

CREATE TABLE checking (
    depid int NOT NULL AUTO_INCREMENT,
    deppp int(11),
    PRIMARY KEY (depid)
);

【讨论】:

  • 但是为什么default列值在读取表的描述时显示Null作为主键
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
  • 2017-05-16
  • 2013-12-29
  • 2018-01-17
  • 2016-04-30
  • 2013-03-19
  • 1970-01-01
相关资源
最近更新 更多