在oracla中事务为隐性事务,用户不需要设置开始事务的语句,每执行一次语句都会自动开始事务。例如:
delete from TEST_USERS where USER_ID = 4;
只输入此sql语句,就默认为:
begin TRANSACTION
delete from TEST_USERS where USER_ID = 4;
在执行了上述sql以后,便可以查看执行结果,若是结果无误,即可执行commit语句提交修改:
修改前的表:
--如果运行结果正确,则提交修改
delete from TEST_USERS where USER_ID = 4;
commit;
运行delete语句后(无需提交即可看到结果):
--如果运行结果错误,则回滚事务
delete from TEST_USERS where USER_ID = 4;
rollback;
运行了回滚之后(尚未commit语句前的操作将全部回滚):
若是想要部分运行结果保留,只回滚部分语句,可以设置保存点(savepoint):
delete from TEST_USERS where USER_ID = 4;
savepoint p1;
insert into TEST_USERS values ('white',123,5);
rollback to p1;
此时的回滚便只会回滚到p1的时间点,而不会将delete语句回滚。