mysql主键空值

时间:2018-01-19 13:37:24

标签: mysql database

我读到主键应该是唯一的而不是null。现在,当我创建一个以checking作为主键的表depid时,表格说明根据我说: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

1 个答案:

答案 0 :(得分:2)

我想你忘了添加"自动增量"到您的主键,所以没有添加任何值。像这样创建你的表:

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