1

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

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

当我尝试添加这一行时:

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

它说字段“id”没有默认值。我正确地做我的主键吗?我见过有人在他们的主键上使用“auto_incrment”,比如这个例子:

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

那是我应该使用的吗?

4

4 回答 4

4

如果您没有指定PRIMARY KEYcolumn asAUTO_INCREMENT那么您必须手动提供值,例如:

INSERT INTO Country(id, name) values(1, 'US');

AUTO_INCREMENT不用就看你自己了。有很多理由这样做,也有很多不这样做:

于 2012-12-03T09:44:10.263 回答
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 的定义相矛盾。这就是为什么你得到错误

我希望解释有用

于 2012-12-03T10:09:01.997 回答
1

如果您没有将主键设置为自动增量,则必须在查询中手动插入。

于 2012-12-03T09:46:11.413 回答
0

主键应设置为 AUTO_INCREMENT,如果不是,则必须手动设置。尽管您仍然可以在将主键设置为 AUTO_INCREMENT 后插入特定值,但前提是该键尚不存在:D

于 2012-12-03T09:49:40.397 回答