问题描述
嗨。
在Apex或SQL Developer Web中是否有禁用自动提交的方法?
我尝试使用“set autocommit off”,但它不起作用。
...并显示先前插入的行
请在堆栈溢出中找到我的问题:
https://stackoverflow.com/questions/68930342/dissable-autocommit-in-sql-developer-web-autonomous-database-oracle-cloud?noredirect=1#comment121820595_68930342
谢谢
在Apex或SQL Developer Web中是否有禁用自动提交的方法?
我尝试使用“set autocommit off”,但它不起作用。
select * from t_test复制
no items to display复制
insert into t_test values (1,2)复制
1 row inserted复制
rollback复制
select * from t_test复制
...并显示先前插入的行
请在堆栈溢出中找到我的问题:
https://stackoverflow.com/questions/68930342/dissable-autocommit-in-sql-developer-web-autonomous-database-oracle-cloud?noredirect=1#comment121820595_68930342
谢谢
专家解答
APEX和SQL开发Web是*无状态的* ,即在调用之间,不知道(状态)上一次调用,因此打开的事务不能保持打开状态...在APEX的情况下,下一次调用所需的所有内容(项目的值等)将存储在数据库中,然后在下一次调用中检索。每个呼叫可以是不同的会话,即
-你向我们发送请求
-我们分配一个会议来完成你的工作
-我们做工作,如果需要,将结果返回给您
-我们释放会话
您做的下一次调用将经历相同的过程,因此可能会在数据库上获得一个完全不同的会话。
因此,我们必须承诺,我们将把控制权还给你们的时刻。
如果您有一系列的DML ,您希望“作为一个”运行,则将其抛入一个PLSQL块,这意味着所有DML都将完成,或者没有任何DML都将完成。
-你向我们发送请求
-我们分配一个会议来完成你的工作
-我们做工作,如果需要,将结果返回给您
-我们释放会话
您做的下一次调用将经历相同的过程,因此可能会在数据库上获得一个完全不同的会话。
因此,我们必须承诺,我们将把控制权还给你们的时刻。
如果您有一系列的DML ,您希望“作为一个”运行,则将其抛入一个PLSQL块,这意味着所有DML都将完成,或者没有任何DML都将完成。
文章转载自askTom,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。