8

我对 PL/SQL 编程非常陌生。我尝试在代码中使用一些 DML 语句(插入)编写一个 pl/sql 过程。在 pl/sql 代码中执行插入操作后,我没有进行任何显式提交。但是在执行 pl/sql 过程后事务被提交。

这是默认行为吗?

我该如何控制这个?

4

2 回答 2

6

在 PL/SQL Developer 客户端中,您可以通过 Preferences 控制 SQL Window 事务的自动提交。

在此处输入图像描述

于 2013-10-03T17:28:35.637 回答
6

DML 语句 (INSERT/DELETE/UPDATE/MERGE) 在 PL/SQL 中不执行自动提交。DDL 语句确实提交(ALTER/CREATE 等),即使发生故障也会发生这种情况。如果您正在运行 EXECUTE IMMEDIATE(如运行 DDL 的动态语句),这也将提交您的事务。自2000 年以来一直如此 [并将继续]

SQL*Plus 之类的客户端接口具有可以关闭/打开的自动提交功能,请在客户端文档中查找。就像是

SET AUTOCOMMIT OFF

你可以看到这个变量的当前状态

SHOW AUTCOMMIT 

这会告诉你它是否开/关。

通过这个了解更多的自动提交变体

于 2013-08-04T12:04:13.597 回答