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