有没有办法在MySQL的第二列模拟auto_increment?

时间:2009-10-07 20:14:23

标签: mysql insert auto-increment

我认为这比我上一版更清晰:

我有一个表已经有一个PK字段,从1开始已经设置为自动增量。我想添加一个不以1开头的新字段,而是以任意数字开头(想想发票号)并自动递增。显然,每个表只能有一个具有该属性的col。在一个查询操作中,有没有办法强制MySQL将该字段的最后一个(或最大)值增加1作为新行中该col的值?

更新:我最后使用id列作为我需要的新值的基础,并删除了非必要列。我的问题从来没有得到回答,真的,但我确实把它作为重新思考方法的暗示,谢谢!

4 个答案:

答案 0 :(得分:1)

这不是您特定问题的答案(因为您询问如何在一个SQL语句中实现目标),但您可以通过调用序列生成来在表上定义一个填充第二列的触发器功能。这将确保此列的值真正唯一(如果您执行max(value)或类似操作则不是这种情况)因为对函数的调用将排队。

或者,如果您确实需要两个显示相同值的列,请创建一个视图,该视图使用不同的别名引用同一列两次。

答案 1 :(得分:1)

有两个具有相同值的列似乎很愚蠢,但现在就去了。

create trigger foo_before_insert 
  before insert on my_table
  for each row set
  new.second_auto_column = first_auto_column
;

答案 2 :(得分:0)

如果它在同一个表中,您可以将您想要的列设置为您的唯一列,但它们将具有相同的值,这似乎毫无意义>你确定需要这个吗?

答案 3 :(得分:0)

如果您可以告诉我们该字段的用途,这将更容易回答。通常,有更好的方法来实现相同的业务需求。无论你做什么都是黑客攻击,你最终会花费大量时间来处理意想不到的后果。