我在一个 oracle 过程中有多个 EXECUTE IMMEDIATE 命令。
EXECUTE IMMEDIATE 'DELETE FROM tbl1';
EXECUTE IMMEDIATE 'INSERT INTO tbl1...';
COMMIT;
EXECUTE IMMEDIATE 'DELETE FROM tbl3';
EXECUTE IMMEDIATE 'INSERT INTO tbl3 ...';
COMMIT;
EXECUTE IMMEDIATE 'DELETE FROM tbl4';
EXECUTE IMMEDIATE 'INSERT INTO tbl4 ...';
COMMIT;
我是否需要所有这些 COMMIT,或者只是在程序结束时?
最佳答案
除了在业务交易结束时,您真正被迫提交的唯一时间是:
正如horsey 评论的那样,正确的提交点是业务事务完成时。否则,您需要自己编写一些代码来检测和修复已离开数据库的部分完成和提交的事务是逻辑上不一致的状态(例如,存在 INVOICE 记录而没有任何 INVOICE_DETAIL 记录)。
关于oracle - 每次 EXECUTE IMMEDIATE 后都需要 COMMIT 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20433082/