トランザクションがロールバックされた場合に、同じ値を再び与えることができるシーケンスが必要です。これはクラスター環境で機能し、高速である必要があります。
言い換えれば、私は私の数え上げに穴を開けたくありません。
例:
同じことを行う5つのトランザクションがあり、すべてのトランザクションで次の値を生成します。
- トランザクション1:生成された値1。
- トランザクション2:生成された値2。
- トランザクション3:生成された値3。
- トランザクション4:生成された値4。
- トランザクション5:生成された値5。
ここで、トランザクション「2」と「4」がロールバックされたと仮定します。私が通常のシーケンスを持っていて、次のトランザクションを実行する場合、生成された値は最も適切には「6」になります。私のシーケンスは未使用の値を返すはずなので、この場合は「2」または「4」です。