欢迎来到天天文库
浏览记录
ID:24267024
大小:377.00 KB
页数:21页
时间:2018-11-13
《sql server其他概念》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、第11章其他概念11.1事务11.2锁定11.3自动化管理11.1事务用一个简单的例子来帮助理解事务:向公司添加一名新的雇员,如图11.1所示。11.1事务在形式上,每个事务的处理必须满足ACID原则,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。(1)原子性。原子性意味着每个事务都必须被认为是一个不可分割的单元。(2)一致性。不管事务是完全成功完成还是中途失败,当事务使系统中的所有数据处于一致的状态时存在一致性。
2、(3)隔离性。隔离性是指每个事务在它自己的空间发生,和其他发生在系统中的事务隔离,而且事务的结果只有在它完全被执行时才能看到。(4)持久性。持久性意味着一旦事务执行成功,在系统中产生的所有变化将是永久的。11.1.2多用户使用问题丢失更新(lostupdate):指当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道其他事务的存在,因此最后的更新将重写由其他事务所做的更新,这将导致数据丢失。脏读(dirtyread):指一个事务正在访问数据,而其他事务正在更新该数
3、据,但尚未提交,此时就会发生脏读问题,即第一个事务所读取的数据是“脏”(不正确)数据,它可能会引起错误。不可重复读(unrepeatableread):当一个事务多次访问同一行且每次读取不同的数据时,会发生此问题。不可重复读与脏读有相似之处,因为该事务也是正在读取其他事务正在更改的数据。幻读(phantomread):当一个事务对某行执行插入或删除操作,而该行属于某个事务正在读取的行的范围时,会发生幻读问题。11.1.3事务处理:BEGIN/COMMIT/ROLLBACK/SAVE/ROLL
4、BACKTRANSACTION系统提供的事务是在执行某些T-SQL语句时,一条语句就构成了一个事务,这些语句包括ALTERTABLE、CREATE、DELETE、DROP、FETCH、GRANT、INSERT、OPEN、REVOKE、SELECT、UPDATE、TRUNCATETABLE。例如,执行如下创建表的语句:CREATETABLExxx(f1intNOTNULL,f2char(10)NOTNULL,f3varchar(30)NULL)11.1.3事务处理:BEGIN/COMMIT/ROL
5、LBACK/SAVE/ROLLBACKTRANSACTION1.开始事务在SQLServer中,显式地开始一个事务可以使用BEGINTRANSACTION语句。语法格式:BEGIN{TRAN
6、TRANSACTION}[{事务名
7、@事务名变量}[WITHMARK['dEscription']]]2.结束事务COMMITTRANSCATION语句是提交语句,它将事务开始以来所执行的所有数据都修改为数据库的永久部分,也标志一个事务的结束,其语法格式为:COMMIT{TRAN
8、TRANSACTION}[
9、事务名
10、@事务名变量]]标志一个事务的结束也可以使用COMMITWORK语句。语法格式为:COMMIT[WORK]11.1.3事务处理:BEGIN/COMMIT/ROLLBACK/SAVE/ROLLBACKTRANSACTION3.撤销事务若要结束一个事务,可以使用ROLLBACKTRANSACTION语句。它使得事务回滚到起点,撤销自最近一条BEGINTRANSACTION语句以后对数据库的所有更改,同时也标志了一个事务的结束。语法格式:ROLLBACK{TRAN
11、TRANSACTION}[事
12、务名
13、@事务名变量]ROLLBACKTRANSACTION语句不能在COMMIT语句之后。另外,一条ROLLBACKWORK语句也能撤销一个事务,功能与ROLLBACKTRANSACTION语句一样,但ROLLBACKTRANSACTION语句接受用户定义的事务名称。语法格式:ROLLBACK[WORK][;]11.1.3事务处理:BEGIN/COMMIT/ROLLBACK/SAVE/ROLLBACKTRANSACTION4.回滚事务ROLLBACKTRANSACTION语句除了能够撤销整个事务
14、外,还可以使事务回滚到某个点,不过在这之前需要使用SAVETRANSACTION语句来设置一个保存点。SAVETRANSACTION的语法格式:SAVE{TRAN
15、TRANSACTION}{保存点名
16、@保存点变量}SAVETRANSACTION语句会向已命名的保存点回滚一个事务。如果在保存点被设置后,当前事务对数据进行了更改,则这些更改会在回滚中被撤销。语法格式:ROLLBACK{TRAN
17、TRANSACTION}[保存点名
18、@保存点变量]11.1.3事务处理:BEGIN/COMMIT/ROLL
此文档下载收益归作者所有