我正在使用这个数据库,这是我尝试构建的第一个数据库:
http://sqlfiddle.com/#!2/38ef8
当我尝试添加此行时:
Insert Into country (name) values ('US');
它说Field'id'没有默认值。我正确地使用主键吗?我见过人们在他们的主键上使用“auto_incrment”,如下例所示:
http://sqlfiddle.com/#!2/c807a/2
这是我应该使用的吗?
答案 0 :(得分:3)
如果您未将PRIMARY KEY
列指定为AUTO_INCREMENT
,则必须手动提供值,例如:
INSERT INTO Country(id, name) values(1, 'US');
由您决定是否使用AUTO_INCREMENT
。这样做的原因有很多,很多人没有这样做:
答案 1 :(得分:2)
有PRIMARY键的属性 1:不能为NULL 2:不能重复
现在当您选择AUTO_INCREMENT时,每次使用查询
Insert Into country (name) values ('US');
它会自动生成一个数字,增加主键列表中存在的最高值
但是当你没有将主键设置为AUTO_INCREMENT时,
Insert Into country (name) values ('US');
此查询将在除给定列之外的行的每列中输入NULL值 在这种情况下,您的PRIMARY_KEY也会获得空值 这显然与PRIMARY_KEY的定义相矛盾。 这就是你得到错误的原因
我希望解释服务
答案 2 :(得分:1)
如果您尚未将主键设置为自动增量,则必须在查询中手动插入主键。
答案 3 :(得分:0)
主键应设置为AUTO_INCREMENT,如果不是,则必须手动设置。 虽然在将主键设置为AUTO_INCREMENT后仍然可以插入特定值,但前提是该键尚未存在:D