特定のビジネス シナリオで、エンティティ (PK ではない) にフィールドを設定する必要があります。
私は次のようにシーケンスを定義しました:
CREATE SEQUENCE MySequence
MINVALUE 65536
MAXVALUE 4294967296
START WITH 65536
INCREMENT BY 1
CYCLE
NOCACHE
ORDER;
Javaコードでは、次のようにシーケンスから番号を取得します:
select mySequence.nextval from dual
私の質問は:
トランザクションでこれを呼び出しselect mySequence.nextval from dual
、同時に別のトランザクションで同じメソッドが呼び出された場合 (並列要求)、シーケンスによって返される値が異なることは確かですか?
最初のトランザクションからコミットされていない値を読み取ることはできませんか?
シーケンスを使用せず、シーケンスをインクリメントする単純なテーブルを使用しなかったとします。trasactinalitY がデフォルトの「READ COMMITTED」である場合、トランザクション 2 は同じ値を読み取ることができたはずです。