我需要设置一个唯一的数字,每个交易的范围为1-99,
我正在考虑创建一个名为SEQ_NUM的MySQL表,只有一个名为'id'的字段,所以每次都可以运行以下的sql,
Update SEQ_NUM set id = id + 1;
获取seq_num,如果seq_num = 100,那么我将设置seq_num = 1并运行另一个sql将id重置为,
Update SEQ_NUM set id = 1;
但我不确定它是否可以保证正常运行,因为可能会有多个事务在同一时间运行,并且在我运行之前
Update SEQ_NUM set id = 1;
可能有另一个要求序列号的交易,并且将返回101。
有什么想法吗?
谢谢!
答案 0 :(得分:3)
我认为模数运算符在这里有用。也许你的基本想法会起作用,但允许SEQ_NUM无限增长,当你为序列号选择它时,将它包装在MOD()中。
但实际上,我想知道你是否已经拥有一个独特的&可以这种方式使用的自动递增ID列(即SELECT MOD(id, 99) as trans_seq
)...