我正在使用这个数据库,它是我尝试构建的第一个数据库之一:
http://sqlfiddle.com/#!2/38ef8
当我尝试添加这一行时:
Insert Into country (name) values ('US');
它说字段“id”没有默认值。我正确地做我的主键吗?我见过有人在他们的主键上使用“auto_incrment”,比如这个例子:
http://sqlfiddle.com/#!2/c807a/2
那是我应该使用的吗?
我正在使用这个数据库,它是我尝试构建的第一个数据库之一:
http://sqlfiddle.com/#!2/38ef8
当我尝试添加这一行时:
Insert Into country (name) values ('US');
它说字段“id”没有默认值。我正确地做我的主键吗?我见过有人在他们的主键上使用“auto_incrment”,比如这个例子:
http://sqlfiddle.com/#!2/c807a/2
那是我应该使用的吗?
如果您没有指定PRIMARY KEY
column asAUTO_INCREMENT
那么您必须手动提供值,例如:
INSERT INTO Country(id, name) values(1, 'US');
用AUTO_INCREMENT
不用就看你自己了。有很多理由这样做,也有很多不这样做:
有 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 的定义相矛盾。这就是为什么你得到错误
我希望解释有用
如果您没有将主键设置为自动增量,则必须在查询中手动插入。
主键应设置为 AUTO_INCREMENT,如果不是,则必须手动设置。尽管您仍然可以在将主键设置为 AUTO_INCREMENT 后插入特定值,但前提是该键尚不存在:D