【发布时间】:2014-07-16 15:40:36
【问题描述】:
我有一个非常简约的脚本,它不起作用。
SET TRANSACTION NAME 'anyname';
DELETE FROM V_RECHNUNG WHERE recno=207;
INSERT INTO V_RECHNUNG (recno) VALUES (207);
ROLLBACK;
SELECT * FROM V_RECHNUNG ORDER BY RECNO DESC;
我不明白为什么 select 语句会得到一个带有 recno 207 的条目。 在我看来,recno 207 的条目根本不应该存在。
重要提示:我在运行此脚本之前检查了 recno 207 不存在。
是否有任何禁用事务的 Oracle 服务器配置?
【问题讨论】:
-
你用什么工具来运行这个脚本?您是否有机会将该工具配置为自动提交它发出的语句?
-
我正在使用原始 php 脚本以及 php adminer 来测试语句。
-
那么问题几乎肯定出在您的 PHP 脚本中。如果您在普通 SQL*Plus 客户端中运行此脚本,您的回滚将恢复
DELETE和INSERT。很可能,您的 PHP 脚本正在自动提交模式下运行。 -
您在使用 OCI 吗?如果你想指定
OCI_NO_AUTO_COMMIT -
使用匿名块代替自动提交
标签: sql oracle transactions rollback