让想AUTO_INCREMENT的初始值为0,但用create或alert table不行,在此请教各位高上能给小弟一个可行的方法。

解决方案 »

  1.   

    ALTER TABLE dd AUTO_INCREMENT = 0
      

  2.   

    常规模式下 AUTO_INCREMENT  只能从>1开始
    不支持负值和0.
      

  3.   

    只能从大于或等于1开始增长,设置成0和1都是从1开始。
    ALTER TABLE hello AUTO_INCREMENT = 0和ALTER TABLE hello AUTO_INCREMENT = 1等同,都是从1开始增长。
      

  4.   

    有一个变通的办法:
    先不要设置自增属性,插入一个ID值为0的记录,然后ALTER TABLE 表名 AUTO_INCREMENT = 1,以后就利用ID自增的特性插入记录,这样就可以达到ID从0开始增长的目的。
    此方法已经在我电脑上验证通过。
      

  5.   

    这样设置,您就能插入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的语句。
      

  6.   

    这样做可以实现:先插入一条记录,之后再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开始
      

  7.   

    刚才打错了,应该是这样,呵呵,不好意思。这样做可以实现:先插入一条记录,之后再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开始