TCL事务控制语言
提交
事务的提交比较简单;直接在执行DML语句后进行提交即可,如果不提交事务则刚刚通过DML语句进行修改的内容还未保存到数据库中,只在当前用户的连接会话中有效。要永久变更数据需要显示地执行提交、回滚或者退出当前回话(如退出sqlplus)。
提交的命令为:commit;
保存点与回滚
保存点savepoint一般与回滚rollback配合使用。在设置了savepoint后事务的粒度可以控制的更加细化,可以回滚到特定的保存点。
【语法】保存点savepoint SAVEPOINT <savepoint_name>;
【示例】 --创建一个保存点,名称为a savepoint a;
【注意】当创建保存点之后执行的DML操作,可以进行回滚,而保存点之前未提交的DML操作不受影响。
【语法】回滚 ROLLBACK [TO savepoint];
【示例】 --回滚到保存点a,即在保存点a之后的所有未提交的DML都无效。 rollback to a;
/*保存点与回滚完整示例*/ --1、创建保存点a savepoint a; --2、插入emp数据 it1 insert into emp(empno,ename) values(1234,'it1'); --3、创建保存点b savepoint b; --4、插入emp数据 it2 insert into emp(empno,ename) values(1235,'it2'); --5、查看emp表数据,存在it1、it2两条数据 select ename from emp; --6、回滚到保存点b,即it2数据将消失 rollback to b; --7、查看emp表数据,存在it1的数据,it2已不在 select ename from emp; --8、提交数据 commit; --9、查看emp表数据,存在it1的数据 select ename from emp; --10、回滚到保存点a,将报错保存点不存在的错误信息 rollback to a;
|