PL SQL Auto Commit执行时

Moh*_*han 5 plsql plsqldeveloper

我是PL/SQL编程的新手.我试着在代码中编写带有一些DML语句(插入)的pl/sql过程.在pl/sql代码中执行插入操作后,我没有进行任何显式提交.但是在执行pl/sql过程后,事务将被提交.

这是默认行为吗?

我怎么能控制这个?

Sla*_*ast 6

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

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

SET AUTOCOMMIT OFF
Run Code Online (Sandbox Code Playgroud)

您可以看到此变量的当前状态

SHOW AUTCOMMIT 
Run Code Online (Sandbox Code Playgroud)

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

通过走为自动提交的更多的变化

  • @mohan - 在程序执行完成后,事务将不会回滚.该事务将保持打开,直到您A)提交它,B)回滚,或C)断开连接,此时将回滚未提交的事务.此外,如果您有一个打开的事务并执行DDL语句(CREATE TABLE,DROP INDEX等),则将提交打开的事务.分享和享受. (6认同)

Mic*_*ill 6

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

在此处输入图片说明