2009-10-07 47 views
2

我认为这比我上一个版本更清晰:有没有办法在MySQL的第二列上模拟auto_increment?

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

更新:我刚刚结束了使用id列作为我需要的新值的基础,并删除了非必要的列。我的问题从来没有得到答案,但我确实以此为重新思考方法的提示,谢谢!

+0

您是否期望此列始终具有与主键相同的值? – 2009-10-07 20:16:57

+2

呃,除非你想玩增量或抵消,他们不会只有相同的价值? – jason 2009-10-07 20:17:16

+0

我想添加的新字段不会从1开始,而是某种特定的方案。所以,不,他们不会有同样的价值。一个用于表格的内部会计,另一个用于业务逻辑。 – 2009-10-07 20:24:49

回答

1

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

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

0

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

1

具有相同价值的两列似乎很愚蠢,但在这里你走了。

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

如果你能告诉我们该领域的用途,这将更容易回答。通常有更好的方法来实现相同的业务需求。无论你做什么都是黑客,你最终会花很多时间处理意想不到的后果。

相关问题