引用 Oracle Transaction Statements 文档:
事务是包含一个或多个 SQL 语句的逻辑原子工作单元。事务对 SQL 语句进行分组,以便它们要么全部提交,这意味着它们被应用到数据库,要么全部回滚,这意味着它们从数据库中撤消。Oracle 数据库为每个事务分配一个唯一标识符,称为事务 ID。
另外,引用维基百科交易帖子:
在计算机科学中,ACID(原子性、一致性、隔离性、持久性)是一组保证数据库事务得到可靠处理的属性。
原子性要求每个事务都是“全有或全无”:如果事务的一部分失败,则整个事务失败,数据库状态保持不变。
在您的情况下,您可以将所有三个句子包含在一个事务中:
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;
这是满足您“一次完成所有句子”要求的最佳方法。