トランザクションごとに 1 ~ 99 の範囲で一意の番号を設定する必要があります。
- トランザクション 1: seq_num = 1;
- トランザクション 2: seq_num = 2;
- ...
- トランザクション 99: seq_num = 99;
- トランザクション 100: seq_num = 1; (転がる)
「id」という名前のフィールドのみを持つ SEQ_NUM という名前の MySQL テーブルを作成することを考えているので、毎回次の 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 が返されます。
何か案が?
ありがとう!