ORACLE中:
insert into table1;
insert into table2;
insert into table3 select * from table2;
insert into table3 select * from table1;我想要的结果是:table3 commit
table1,table2 rollback
要怎么做?
insert into table1;
insert into table2;
insert into table3 select * from table2;
insert into table3 select * from table1;我想要的结果是:table3 commit
table1,table2 rollback
要怎么做?
我只是举的一个例子,
实际中比这个复杂还有就是,不COMMIT,也不ROLLBACK,下次我读这个表时有没有数据?
2 可以设置savepoint来将当前操作回滚到以前某个未提交的保存点,一旦提交就不能再回滚了;
3 所以oracle不能通过事务控制实现提交最后的修改后再回滚之前的操作的功能,sqlserver也不可以;
4 如果之想取消commit之前某些操作,可以通过灵活设置保存点进行回滚操作,但是如果想要只保留最后操作再回滚之前的操作只能通过dml语句进行反向操作了如:
假设a为主键
insert into table1 select a,b from table_source;
insert into table_result select a,b from table1;
delete table1 where exists (select 1 from table_source where table_source.a = table1.a);
commit;