当执行SQL语句出错时,等于这条语句所执行的操作未执行,并没有进行事务的回滚,相反,当执行
delete from table1 where ...
detete from table2 where .......
两条语句后,执行rollback或commit,两条语句的结果同时回滚或提交。

解决方案 »

  1.   

    你有没有rollback
    如果没有,数据库会自动commit
      

  2.   

    对于DML(数据操纵语言),可以回滚,用rollback实现。
    对于对oracle内部对象(如更改表结构等)的一些操作,oracle自动提交的。
        好象你的语句,oracle在执行的时候就变成了:
        delete from table where .......;
        commit;
        update table set column1=......;
        commit;
      

  3.   

    所谓的语句级回滚,应该是某个SQL语句执行失败时进行的,它的回滚应该不影响其他语句的结果。
      

  4.   

    按 Lastdrop(空杯) 的说法‘语句级回滚‘不需要显式的写出来,这样做好像不符合尝试吧。他怎能不影响其他语句呢,好比我转帐,打入其他用户的账号时失败了,但是钱还从我账号中扣除,这是不可以的。。
      

  5.   

    所以转账的动作是将一系列的SQL语句放在一个事务中执行,若其中任何一个失败,就对事务进行回滚,保证数据的完整性。