联系方式:http://www.rzchina.net北京源智天下科技有限公司PL/SQL从入门到精通视频第十一讲:事务处理和锁定1-2北京源智天下科技有限公司联系方式:http://www.rzchina.net课程安排•事务处理简介•使用锁定1-3北京源智天下科技有限公司联系方式:http://www.rzchina.net事务处理简介•什么是事务处理•使用COMMIT提交事务•使用ROLLBACK回滚事务•使用SAVEPOINT保存点•使用SETTRANSACTION设置事务属性1-4北京源智天下科技有限公司联系方式:http://www.rzchina.netACID•由于事务处理要确保事务内数据操作的一致性,因此一个事务必须要满足所谓的ACID即原子性、一致性、隔离性和持久性这四个属性。•1.原子性•事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。以网上银行转账为例,必须在A账户上增加1000元,同时要在B账户上减少1000元,要么同时执行,要么都不执行更改,以确保整个事务是一个原子工作单元。•2.一致性•事务在完成时,必须使所有的数据都保持一致状态,即所有的数据都要发生更改,以保证数据的完整性。在银行转账时,A账户和B账户的数据都要发生更改,以便保证数据的完整性。•3.隔离性•2个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。比如银行转账操作时,如果有其他的会话也在对进行转账,那么当前事务内不能看到其他事务在运行时或运行中间某一时刻的数据。•4.持久性•一旦事务被提交之后,数据库的变化就会被永远保留下来,即使运行数据库软件的机器后来崩溃也是如此。1-5北京源智天下科技有限公司联系方式:http://www.rzchina.net事务处理示意图上一次COMMIT或ROLLBACK以来INSERT(将开始一个事务)DELETE语句SAVEPOINTAUPDATE语句DELETE语句SAVEPOINTBINSERT语句COMMIT事务回滚到SAVEPOINTB回滚到SAVEPOINTA1-6北京源智天下科技有限公司联系方式:http://www.rzchina.net使用COMMIT提交事务•COMMIT语句会结束数据库事务,它做了如下几方面的工作:•如果对数据库使用了DML语句进行了修改,那么这些修改就被永久的写进了数据库中,这时其他用户可以立即看到对事务所做的修改。•加在事务上的所有锁以及事务所占有的一切资源(如游标、内存等)自动的被释放。•COMMIT语句的声明语法如下所示:•COMMIT[WORK][COMMENTtext];1-7北京源智天下科技有限公司联系方式:http://www.rzchina.net使用ROLLBACK回滚事务•如果说COMMIT就好比保存操作的话,那么ROLLBACK就好比撤消操作。与COMMIT语句一样,ROLLBACK语句将终止当前的事务,使用ROLLBACK语句执行回滚的情形一般有2大类:•误删除了数据或者是更改了错误的数据,使用回滚能帮助恢复原始的数据。•如果触发了一个异常或者SQL语句执行失败而不能完成事务,使用回滚能将数据恢复到初始状态,以便于再次执行。•ROLLBACK的基本语法如下所示:•ROLLBACK[WORK][TO[SAVEPOINT]savepoint_name];1-8北京源智天下科技有限公司联系方式:http://www.rzchina.net使用SAVEPOINT保存点•默认情况下,ROLLBACK会撤消整个事务,如果编写了一个很大的PL/SQL块,使用了很多的DML语句,此时回滚操作的工作量是比较大的。PL/SQL提供了语句级别的回滚,允许将一个大的事务分成很多语句级的小块,每一个小块作为一个保存点,这样在执行PL/SQL程序时,如果发生了错误,Oracle只是回滚到最近的保存点,而不是撤消整个事务。•保存点的声明语法如下所示:•SAVEPOINTsavepoint_name;1-9北京源智天下科技有限公司联系方式:http://www.rzchina.net使用SETTRANSACTION设置事务属性•SETTRANSACTIONparameter;•parameter用来指定事务的参数,可供使用的参数取值有如下的几种:•READONLY:用于建立只读事务,在此事务中执行任何INSERT、DELETE、UPDATE或SELECTFORUPDATE等命令都属于非法操作,对于这种事务模式不用指定回滚段,基本语法如下所示:•SETTRANSACTIONREADONLY;•READWRITE:建立读写事务,读写事务没有只读事务的种种限制,不仅可以执行SELECT语句,也可以执行INSERT、DELETE、UPDATE等语句,基本语法如下所示:•SETTRANSACTIONREADWRITE;•ISO...