版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、事务,2,目录,4.创建修改与删除触发器,3.解发器的概念和特点,2.显式事务/隐式事务/自动事务的讲解,1.事务概念和分类,5. 总结,3,事务概念,事务是SQL中的单个逻辑工作单元,一个 事务里的所有语句被作为整体执行 遇到错误时,可以回滚事务内的所有改变,从而保证数据库的一致性和可恢复性 一个逻辑工作单元必须具有四种属性,也称为ACID,4,事务概念-事务的四种属性,原子性(Atomicity):一个事务必须作为工作的原子单位,它所做的数据修改要么全部执行,要么全部取消 一致性(Consistency):当事务完成后,所有数据必须处于一致性状态,即:事务所修改的数据必须遵循数据库中各种约
2、束、规则要求,保持数据的完整性 隔离性(Isolation):一个事务所做的修改必须能够与其他事务所做的修改隔离开来;在并发处理过程中,一个事务所看到的数据状态必须为另一个事务处理前或后的数据 永久性(Durability):事务完成后,它对数据库所做的修改被永久保留下来。事务日志保证事务的永久性,5,事务分类,显式事务:由用户执行T-SQL事务语句而定义的事务,又称为用户定义事务 隐式事务:当前事务提交或回滚后,SQL自动开始的事务。使用implicit_transations选项打开隐式事务。 自动事务模式:在自动事务模式下,当一个语句被成功执行后,它被自动提交,而当它执行过程中产生错误时
3、,则被自动回滚。自动事务模式是SQL的默认管理模式,6,事务分类 -自动模式下批的执行情况,在执行批的过程中,批中的一个语句发生错误,批中的所有语句将不被执行 示例: 备注,7,事务分类 -事务处理语句,begin transaction:建立一个显式事务 commit transaction:标识一个隐式或显式事务的结束 rollback transaction:将一个隐式或显式事务回滚到事务开始位置或指定的存储点位置 save transaction:在一个事务内建立一个存储点标记,使rollback transaction语句可使用该标记回滚部分事务操作,8,事务分类 -注意点,在定义一
4、个事务时,begin transaction语句应与commit transaction或rollback transaction成对出现 事务定义语句可以嵌套,但只有最外层的begin transaction和commit transaction语句才能建立和提交事务;在回滚事务时也只能使用最外层定义的事务名或存储点标记 事务嵌套常用在存储过程或触发器内,应尽量避免事务的嵌套 在事务定义中,不能使用数据库选项设置或系统存储过程修改master数据库,9,事务分类- (示例),建立一个用户定义事务及事务的回滚操作和事务中的存储点回滚 示例: 备注,10,事务分类 - (示例2),备注中的例子说
5、明隐式事务的处理过程。在打开implicit_transactions连接选项后,自动进入第一个隐式事务。在前一个隐式事务提交或回滚后,SQL自动进入下一个新的隐式事务。,触发器,12,触发器特点与应用范围,是一种特殊类型的存储过程,基于某个表或视图(触发表、触发视图)的一个或多个列创建,用于监控它们的insert、update、delete操作(触发操作),当发生以上操作时自动执行事先定义的步骤,可进行复杂的数据完整性监测和约束,13,特点与应用范围-特点,不能直接调用,只有在对触发器表的数据进行更改时,才自动执行 不能传递和接受参数 触发器建立在表一级,与指定的数据修改事件相对应 触发器可
6、以实施更为复杂的数据完整性约束,例如跨数据库的参照性约束,14,特点与应用范围-优点,数据库中跨越相关表的级联修改 无论什么原因对触发器表或视图的数据进行修改时,都能激活触发器,从而对数据实施完整性检查 触发器能够实施比primary key约束、check约束和规则对象等更为复杂的检查和操作 定义自定义的错误信息,15,特点与应用范围 -触发器vs约束,在SQL Server的早期版本中,通常使用触发器来实现参照完整性 6.0以后版本中使用PK和FK来实现简单的参照完整性,但对于要参照其他数据库对象的参照完整性约束只能使用触发器 CHECK约束只能引用当前列(列级)或当前表(表级)的列值,而
7、触发器则可以引用其他表的列值 触发器可以是后反应的,而约束是前反应的,16,创建触发器,语法: create trigger trigger_name on table | view with encryption for | after | instead of insert,update,delete as sql_statement ,17,创建触发器-触发器的类型,后触发器(FOR、AFTER):在触发操作执行完成后才进行触发器定义的操作 前(替代)触发器(instead of):在进行触发操作时,不执行触发操作,取而代之触发器定义的操作,18,创建触发器- (示例),create t
8、able tb_trigger1( col1 int identity,col2 char(10) null) create trigger trigger1_1 on tb_trigger1 for insert as if update(col2) print col2列被修改!,19,创建触发器-注意点,在调用create trigger语句时,必须为批中的第一个语句 当约束与触发器同时存在时,先检查约束 表的任何动作都可以有多个触发器 用户必须具备执行触发器定义的所有语句的权限 不可以在视力和临时表上创建after触发器,但可以参照这些对象,可以创建instead of触发器 如果触发
9、器在一个事务内,则触发器内的所有操作均认为是事务的一部分,20,创建触发器- 工作原理,触发器执行时产生两个临时表:inserted和deleted。这两个表在结构上和触发表一样 执行insert语句时,插入到触发表的数据被插入到inserted表;执行delete语句时,从触发器中删除的行被插入deleted表;update语句实际分为delete和insert两步,21,创建触发器-触发器嵌套,触发器嵌套是指一个触发器更改另一个触发表中的内容时,激活第二个触发器,第二个触发器又以同样的方式激活第三个,等等 最大嵌套级数是32级,如果嵌套级数超过32级,则整个调用链均不执行 使用nested triggers服务器选项控制是否允许触发器嵌套 sp_configure nested triggers,1,22,创建触发器-递归调用,递归是触发器嵌套的特殊类型 直接递归 间接递归 只有当将recursive_triggers数据库选项设置为on时,才可以直接递归调,nested triggers选项设置控制嵌套调用 instead of触发器不产生递归调用,23,修改与删除触发器,使用alter trigger语句,和create trigger基本一样 删除触发器 drop trigger trigger_name,24,总结,事务概念 事务分类 显式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47212.7-2026家畜遗传资源保种场保种技术规范第7部分:兔
- 企业财务风险预警与评估模型
- 教育培训机构诚实办学承诺书范文4篇
- 专项范围守秘责任书(4篇)
- 员工培训计划制定模板高效
- 大气污染防治措施实施承诺书(4篇)
- 河南省临颍县联考2026届初三下学期英语试题试卷含解析
- 山东省菏泽市单县市级名校2026年中考英语试题命题比赛模拟试卷(26)含解析
- 行政采购流程与成本控制模板版
- 医院人性化护理的培训与教育
- 2025护理分级新标准
- GB/T 42124.3-2025产品几何技术规范(GPS)模制件的尺寸和几何公差第3部分:铸件尺寸公差、几何公差与机械加工余量
- T/TMAC 084-2024煤电环保智能化控制平台建设指南
- T/CTRA 01-2020废轮胎/橡胶再生油
- DB31/T 1363-2022口腔综合治疗台水路卫生管理要求
- 可信数据空间解决方案星环科技
- 啦啦操队形变化设计与编排
- 《公路工程质量控制》课件
- 物联网工程专业本科主干课程教学大纲
- 酒店厨房安全培训课件
- 1完整版本.5kw机器人专用谐波减速器设计
评论
0/150
提交评论