版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章.事务处理
9.1引言
9.2Transact-SQL语句和事务处理
9.3锁定9.1引言
事务(Transaction)与锁定(Lock)可以确保数据在存储或修改过程中受到其他用户的中断时,能够正确地被存储、修改,而不会造成数据因被存储或修改到一半而导致数据不完整。事务是SQLServer中的执行单元,它由一系列T-SQL语句组成。事务处理必须满足ACID原则。ACID指原子性(Atomicity)、一致性(Consistency)、隔离性(Iso1ation)与持久性(Durability)。事务的这种机制保证了一个事务或者提交后成功执行,或者提交后失败滚回。也就是说,执行事务的结果或是将数据所要执行的操作全部完成,或是全部数据一点也不修改。
返回目录9.2Transact-SQL语句和事务处理
事务是一种机制,是一个操作序列,它包含了一组数据库操作命令,即由一系列T-SQL语句组成。SQLServer的事务可分为两类::系统提供的事务和用户定义的事务。系统提供的事务是指在执行某些T-SQL语句时,一条语句就构成了一个事务,这些语句是:1.ALTERTABLE2.CREATE3.DELETE4.DROP5.REVOKE6.SELECT7.TRUNCATETABLE8.INSERT8.OPEN9.UPDATE11.GRANT12.FETCH
返回目录9.2Transact-SQL语句和事务处理例如执行创建表的语句:Createtableusers(idintnotnull,usernamevarchar(20),
passwordvarchar(20))这条语句本身就构成了一个事务,它要么建立起含3列的表结构,要么对数据库没有任何影响。在实际应用中,经常使用的是用户自定义的事务。事务的定义方法是:用BEGINTRANSACTION命令来标识一个事务的开始,用COMMITTRANSACTION或ROLLBACKTRANSACTION命令来标识事务的结束。这两个命令之间的所有语句被视为一体,只有执行到
COMMITTRANSACTION命令时,事务中对数据库的更新操作才算确认。
返回目录1.BEGINTRANSACTION语句BEGINTRANSACTION语句定义事务的开始,其语法格式为:BEGINTRAN[SACTION][transaction_name|@tran_name_variable[WITHMARK[‘description’]]其中,参数transaction_name指定事务的名称,必须遵循标识符规则,字符数不超过32个字符。@tran_name_variable表示用户定义的、含有效事务名称的变量。变量只能声明为
CHAR、VARCHAR、NCHAR或NVARCHAR类型。WITHMARK指定在日志中标记事务,description是描述该标记的字符串。BEGINTRANSACTION语句的执行使全局变量@@TRANCOUNT的值加1。(@@TRANCOUNT是用来计算当前连接中现有事务的数目。)
返回目录2.COMMITTRANSACTION语句COMMIT语句标志一个事务的结束,同时也是提交语句,它使得自从事务开始以来所执行的所有数据修改成为数据库的永久部分。其语法格式为:COMMIT[TRAN[SACTION][transaction_name|@tran_name_variable]]其中
,参数transaction_name和@tran_name_variable分别表示事务名称和事务变量名。COMMITTRANSACTION语句的执行使全局变量@@TRANCOUNT的值减1。标志一个事务的结束也可以使用COMMITWORK语句,其语法格式为:
COMMIT[WORK]它与COMMITTRANSACTION语句的差别在于COMMITWORK语句不带参数。返回目录【9.1】定义一个事务,删除demo数据库的users表中的一行数据。
BEGINTRANUSEdemoDELETEFORMusersWHEREusername=’chen’COMMITTRANGO
返回目录9.3锁定
SQLServer2000通过锁定(Lock)来确保事务完整性和数据库一致性。锁定可以防止丢失更新、读取尚未认可的数据、不可重复读和幻象读取(Phantomread)。9.3.1锁定的概念锁定(Lock)是在多用户环境下对资源访问的一种限制机制,当对一个数据源加锁后,此数据源就有了一定的访问限制,就称对此数据源进行了锁定。在
SQLServer中,可以对以下的对象进行锁定:数据行(Row),索引行(Key),页(Page),盘区(Extent),表(Table),数据库(Database)。在SQLServer2000中,拥有多个数据点的锁定,来允许事务锁定不同类型的资源。为了把锁定的成本降至最低,SQLServer自动根据工作的适当层级来锁定资源。
返回目录9.3.2锁定的类别在SQLServer2000中,使用不同的锁模式锁定资源,这些锁模式确定了并发事务访问资源的方式。锁定按两种不同分类方法共有5种锁模式。1.从数据库系统的角度来看锁定分为以下三种类型:共享锁(SharedLock),更新锁(UpdateLock),独占锁(ExclusiveLock)2.从程序员的角度看锁定分为以下两种类型:乐观锁(OptimisticLock),悲观锁(PessimisticLock)。
返回目录9.3.3查看锁定信息在SQLServer2000中,可以通过企业管理器或存储过程sp_lock来查看锁定信息。1.利用EnterpriseManager查看锁2.用系统存储过程Sp_lock查看锁存储过程
Sp_lock的语法格式如下:sp_lock[[@spid1=]’spid1’][,[@spid2=]’spid2’]
spid是SystemProcessID,即系统进程编号的缩写,可以在master.dbo.sysprocesses
系统表中查到。spid是INT类型的数据,如果不指定spid则显示所有的锁。【例9.2】
显示当前系统中所有的锁usemasterexecsp_lock
运行结果就会显示master中所有的锁。返回目录9.3.4死锁及其防止死锁(Deadlocking)是当两个事务分别锁定某个资源,而又分别等待对方释放其锁定的资源时,将发
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医联体背景下基层医联体品牌效应
- 产科护理中的沟通与协调技巧
- 医联体单位报告标准化推广实践
- 医疗资源配置的气候预警依据
- 医疗资源动态调整机制设计
- 医疗质量评价指标与成本的关联性研究
- 2025年建筑工地安全帽检测培训课件
- 感音性耳聋患者的压力管理
- 护理伦理案例分析与实践
- 2026云南临沧市桑嘎艺术学校长期招聘22人笔试模拟试题及答案解析
- 《高血压诊断与治疗》课件
- 2025-2030中国建筑应用光伏(BAPV)行业市场发展趋势与前景展望战略分析研究报告
- 儿科医生进修汇报
- 2025年四川藏区高速公路有限责任公司招聘笔试参考题库含答案解析
- 妇女节女性健康知识讲座关爱女性健康主题宣教课件
- 第一单元第1课《辉煌成就》课件-七年级美术下册(人教版)
- 2025年春季学期三年级语文下册教学计划及教学进度表
- 板材加工项目可行性研究报告
- 2025年派出所教导员履职述职报告范文
- GB/T 33130-2024高标准农田建设评价规范
- 《创新方法及技巧》课件
评论
0/150
提交评论