2个表(ba2, bb)int字段有主外键关系。 ba2的a字段是自增长字段,步长为1.
bb的外键联系ba2的 a ,  实际应用的时候要求a有时候为空 为0.如果直接插入0到主键 mysql会自动转化为1, 现在我的解决方法如下:drop table if exists ba2;
CREATE TABLE `ba2` (
  `b` int(11) default NULL,
  `a` int(11) NOT NULL auto_increment,
  PRIMARY KEY  (`a`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert ba2(a) values(0);
update ba2 set a=0 , b=0;
insert ba2(a) values(1);
insert ba2(a) values(2);
insert ba2(a) values(3);
insert ba2(b) values(455);   思考有没有更好的方法解决这个问题, 比如设置mysql表的 校对方法等等
上面的方法可以解决 但希望有更地道的方法来加0 而且能自动增长

解决方案 »

  1.   

    SQL_MODE 加上 NO_AUTO_VALUE_ON_ZERO 就行了。
      

  2.   

    楼上可以给出详细的ddl语句
    或者sql??
      

  3.   

    帮助中搜索一下 NO_AUTO_VALUE_ON_ZERO 
      

  4.   

    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可以解决该问题。