SQL查询:
CREATE TABLE bonus(
bonusid INT( 10 ) DEFAULT '0' NOT NULL AUTO_INCREMENT ,
empid INT( 10 ) DEFAULT '0' NOT NULL ,
datebonus DATE DEFAULT '0000-00-00' NOT NULL ,
bonuspayment VARCHAR( 200 ) NOT NULL ,
note TEXT NOT NULL ,
PRIMARY KEY ( bonusid )
);
MySQL说:文档
1067 - 'bonusid'
的默认值无效
答案 0 :(得分:3)
您不必为具有自动增量值的主键提供默认值。由于您已将bonusid
定义为主键并已定义自动增量。因此,只要插入新记录,这将自动为bonusid
创建新值。所以请尝试这样
CREATE TABLE bonus(
bonusid INT( 10 ) NOT NULL AUTO_INCREMENT ,
empid INT( 10 ) DEFAULT '0' NOT NULL ,
datebonus DATE DEFAULT '0000-00-00' NOT NULL ,
bonuspayment VARCHAR( 200 ) NOT NULL ,
note TEXT NOT NULL ,
PRIMARY KEY ( bonusid )
);
答案 1 :(得分:1)
主键不允许使用默认值,因为如果您使用默认值到主键,那么某些时候将记录插入相同的主键并且不允许主键在此列中插入相同的值。
检查这个
CREATE TABLE bonus(
bonusid INT( 10 ) AUTO_INCREMENT ,
empid INT( 10 ) DEFAULT '0' NOT NULL ,
datebonus DATE DEFAULT '0000-00-00' NOT NULL ,
bonuspayment VARCHAR( 200 ) NOT NULL ,
note TEXT NOT NULL ,
PRIMARY KEY ( bonusid )
);
如果您使用某个列作为主键,则默认不为null不用于声明此列。 请参阅此链接以获取自动增量
答案 2 :(得分:0)
即使
bonusid
列NOT NULL
,您也不必 指定default value
,如果它具有特殊的auto_increment
选项 当你create
时table
。
尝试如下:
CREATE TABLE bonus(
bonusid INT( 10 ) NOT NULL AUTO_INCREMENT ,
empid INT( 10 ) DEFAULT '0' NOT NULL ,
datebonus DATE DEFAULT '0000-00-00' NOT NULL ,
bonuspayment VARCHAR( 200 ) NOT NULL ,
note TEXT NOT NULL ,
PRIMARY KEY ( bonusid )
);
<强> FIDDLE DEMO HERE 强>