0

我需要为每笔交易设置一个唯一的号码,范围为 1-99,说,

  • 事务1:seq_num = 1;
  • 事务2:seq_num = 2;
  • ...
  • 交易99:seq_num = 99;
  • 事务 100:seq_num = 1;(滚下)

我正在考虑创建一个名为 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 将被返回。

任何的想法?

谢谢!

4

1 回答 1

3

我认为模数运算符在这里很有用。也许你的基本想法会起作用,但允许 SEQ_NUM 无限增长,当你选择它作为你的序列号时,将它包装在 MOD() 中。

但实际上,我想知道您是否已经有一个可以以这种方式使用的唯一且自动递增的 ID 列(即SELECT MOD(id, 99) as trans_seq)...

于 2012-12-18T19:52:55.533 回答