为mysql中的多个列提供auto_increment的默认值

时间:2012-06-18 12:38:13

标签: java mysql html sql servlets

当我尝试执行以下查询时

create table xyz(id int(3) not null auto_increment, name char(10) not null, code int(6) auto_increment=2000);

我收到以下错误:

You have an error near '=2000)'

我希望id列从1开始,它将从1开始,但同时我希望每当我将数据插入表中时,代码列将从2000开始递增。 那么,查询中是否可以有两个auto_increments?我是在servlet的帮助下完成的。

1 个答案:

答案 0 :(得分:0)

直接回答:你不能拥有多个auto_increment值,正如poncha所说。

但是,这可以通过以下几种方式完成:

  1. 重写insert语句以查找上一个代码并添加1:

    INSERT INTO xyz(name,code)VALUES(“some-name”, (SELECT max(code)+1 FROM xyz))

  2. 在插入后创建一个mysql触发器以查找代码的最大值并添加一个然后更新

  3. !!我根本不推荐这个,请重新设计你的代码!!

    我的最高建议是生成一个随机数,并在插入或重写子查询时使用它来创建一个随机数。