我读到主键应该是唯一的而不是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
。
答案 0 :(得分:2)
我想你忘了添加"自动增量"到您的主键,所以没有添加任何值。像这样创建你的表:
CREATE TABLE checking (
depid int NOT NULL AUTO_INCREMENT,
deppp int(11),
PRIMARY KEY (depid)
);