Oracle Transaction Statements ドキュメントの引用:
トランザクションは、1 つ以上の SQL ステートメントを含む、論理的で原子的な作業単位です。トランザクションは、SQL ステートメントをグループ化して、それらがすべてコミットされる (データベースに適用されることを意味する) か、すべてロールバックされる (データベースから元に戻されることを意味する) ようにします。Oracle Databaseは、トランザクションIDと呼ばれる一意の識別子をすべてのトランザクションに割り当てます。
また、ウィキペディアのトランザクション投稿を引用します。
コンピューター サイエンスでは、ACID (Atomicity、Consistency、Isolation、Durability) は、データベース トランザクションが確実に処理されることを保証する一連のプロパティです。
原子性では、各トランザクションが「オール オア ナッシング」である必要があります。トランザクションの一部が失敗すると、トランザクション全体が失敗し、データベースの状態は変更されません。
あなたの場合、3 つの文すべてを 1 つのトランザクションで囲むことができます。
COMMIT; ''This statement ends any existing transaction in the session.
SET TRANSACTION NAME 'my_crazy_update'; ''This statement begins a transaction
''and names it sal_update (optional).
UPDATE PS_EMAIL_ADDRESSES
SET PREF_EMAIL_FLAG='N'
WHERE EMPLID IN ('K0G004');
DELETE FROM PS_EMAIL_ADDRESSES
WHERE EMPLID='K0G004' AND E_ADDR_TYPE='BUSN';
INSERT INTO PS_EMAIL_ADDRESSES
VALUES('K0G004', 'BUSN', 'ABS@GNC.COM.BZ', 'Y');
COMMIT;
これは、 「一度にすべての文を実行する」という要件をキャッチするための最良のアプローチです。