我有一张发票表(innoDB),我需要手动设置下一张发票的累进号码。我的代码现在是
SELECT MAX(invoice_n) FROM invoices WHERE invoice_y = 2013
然后定期保存记录,将新invoice_n = max + 1.我在invoice_n-invoice_y上有一个索引UNIQUE,我正在记录db错误,所以我看到有时我有重复的键入错误,因为我有数百个不同的用户连接。我将代码放在循环中,直到生成发票,但我认为可以有一个更优雅的解决方案,尤其是使用事务。我读了一下,但我无法理解如何通过交易来实现我的结果。
任何帮助?
答案 0 :(得分:0)
您可以在列定义中使用"AUTO_INCREMENT"。如果插入失败,您会在数字之间看到一些空隙。
另一种方法是创建一个每年包含最后一个索引的表(请参阅注释)并按照以下步骤操作:
一些链接:
另一个,您可以使用“乐观方法”并重复选择和插入,如果它因为重复键而失败。
我希望这对您有所帮助,欢迎任何评论!