未提交的sql语句会发生什么?

时间:2013-02-25 08:41:52

标签: c# sql oracle transactions

我正在做一个声明,要求我执行一个包,执行sql然后提交。

sql的执行决定了它是否成功,我正在检查sql代码的受影响行的编号。如果它只是1,那么commit(一个单独的命令)永远不会运行。

其他两个命令会发生什么,正如我所说,我执行一个命令,我执行一个包,sql本身在两个命令中?

1 个答案:

答案 0 :(得分:3)

如果没有COMMITROLLBACK语句,那么当会话结束时,工作将被回滚。

您可以在Transation Management Doc

中找到一些详细说明

更新 APC是对的,该文档比我更具体:

  

当发生以下任何情况时,交易结束:

     

用户在没有SAVEPOINT的情况下发出COMMIT或ROLLBACK语句   子句。

     

用户运行DDL语句,例如CREATE,DROP,RENAME或ALTER。如果   当前事务包含任何DML语句,Oracle数据库   首先提交事务,然后运行并提交DDL   声明作为新的单一陈述交易。

     

用户断开与Oracle数据库的连接。目前的交易是   提交。

     

用户进程异常终止。目前的交易是   回滚。

     

注意:应用程序应始终在程序终止前显式提交或撤消事务。

所以,我没有回答你的问题。这取决于你的连接器在disconection时做了什么。