以下の形式でバッチ番号 (主キー) を生成する必要があるシナリオがあります。
バッチ番号: ( XX ) ( XXXXX ) 場所の順序
Eg: 0100001
0100002
0200001
0100003
0200002
.......
シーケンスは、バッチごとに 00001 から始まります。ただし、これを行うためのシーケンス番号ジェネレーターを使用することはできません。私の頭の上にある可能な解決策は次のとおりです。
- 数値を保持する追加のテーブルを作成します。ただし、コミットされていないトランザクションが存在する可能性があるため、複数のユーザーが同じシーケンスを取得する可能性があります。
- エンティティが保存されるたびに、その列から max(substring(batchnum,2)) を取得し、+1 を追加します。しかし、これはパフォーマンスに非常に大きな過負荷をもたらし、複数のユーザーが同じシーケンスを取得するという問題もあります。