这样设置,您就能插入0的id,如 insert into tbl set id=0; set sql_mode='NO_AUTO_VALUE_ON_ZERO';NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。 如果将0保存到表的AUTO_INCREMENT列,该模式会很有用。(不推荐采用该惯例)。例如,如果你用mysqldump转储表并重载,MySQL遇到0值一般会生成新的序列号,生成的表的内容与转储的表不同。重载转储文件前启用NO_AUTO_VALUE_ON_ZERO可以解决该问题。mysqldump在输出中自动包括启用NO_AUTO_VALUE_ON_ZERO的语句。
这样做可以实现:先插入一条记录,之后再update这个ID=0,如下: insert into test values(0,'a'); update test set id=1 where name='a'; insert into test values(1,'b'); 这样做之后下一条记录的id会自动从2开始
刚才打错了,应该是这样,呵呵,不好意思。这样做可以实现:先插入一条记录,之后再update这个ID=0,如下: insert into test values(0,'a'); update test set id=0 where name='a'; insert into test values(1,'b'); 这样做之后下一条记录的id会自动从2开始
不支持负值和0.
ALTER TABLE hello AUTO_INCREMENT = 0和ALTER TABLE hello AUTO_INCREMENT = 1等同,都是从1开始增长。
先不要设置自增属性,插入一个ID值为0的记录,然后ALTER TABLE 表名 AUTO_INCREMENT = 1,以后就利用ID自增的特性插入记录,这样就可以达到ID从0开始增长的目的。
此方法已经在我电脑上验证通过。
set sql_mode='NO_AUTO_VALUE_ON_ZERO';NO_AUTO_VALUE_ON_ZERO影响AUTO_INCREMENT列的处理。一般情况,你可以向该列插入NULL或0生成下一个序列号。NO_AUTO_VALUE_ON_ZERO禁用0,因此只有NULL可以生成下一个序列号。
如果将0保存到表的AUTO_INCREMENT列,该模式会很有用。(不推荐采用该惯例)。例如,如果你用mysqldump转储表并重载,MySQL遇到0值一般会生成新的序列号,生成的表的内容与转储的表不同。重载转储文件前启用NO_AUTO_VALUE_ON_ZERO可以解决该问题。mysqldump在输出中自动包括启用NO_AUTO_VALUE_ON_ZERO的语句。
insert into test values(0,'a');
update test set id=1 where name='a';
insert into test values(1,'b');
这样做之后下一条记录的id会自动从2开始
insert into test values(0,'a');
update test set id=0 where name='a';
insert into test values(1,'b');
这样做之后下一条记录的id会自动从2开始