SQL中的主键 - 默认值

时间:2012-12-03 09:39:33

标签: mysql sql

我正在使用这个数据库,这是我尝试构建的第一个数据库:

http://sqlfiddle.com/#!2/38ef8

当我尝试添加此行时:

Insert Into country (name) values ('US');

它说Field'id'没有默认值。我正确地使用主键吗?我见过人们在他们的主键上使用“auto_incrment”,如下例所示:

http://sqlfiddle.com/#!2/c807a/2

这是我应该使用的吗?

4 个答案:

答案 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