オラクルに接続されたWebアプリに取り組んでいます。Oracleには、「アクティブ化された」列を持つテーブルがあります。この列を一度に1に設定できるのは1行だけです。これを強制するために、JavaでSERIALIZED分離レベルを使用していますが、「トランザクションをシリアル化できません」というエラーが発生し、その理由を理解できません。
READCOMMITTEDの分離レベルでうまくいくかどうか疑問に思っていました。だから私の質問はこれです:
次のSQLを含むトランザクションがある場合:
SELECT *
FROM MODEL;
UPDATE MODEL
SET ACTIVATED = 0;
UPDATE MODEL
SET ACTIVATED = 1
WHERE RISK_MODEL_ID = ?;
COMMIT;
これらのトランザクションの複数が同時に実行される可能性があるとすると、複数のMODEL行でアクティブ化されたフラグを1に設定することは可能でしょうか?
どんな助けでもいただければ幸いです。