文档详情

事务与触发器课件.ppt

发布:2016-12-31约3.43千字共25页下载文档
文本预览下载声明
事务 目录 事务概念 事务是SQL中的单个逻辑工作单元,一个 事务里的所有语句被作为整体执行 遇到错误时,可以回滚事务内的所有改变,从而保证数据库的一致性和可恢复性 一个逻辑工作单元必须具有四种属性,也称为ACID 事务概念-事务的四种属性 原子性(Atomicity):一个事务必须作为工作的原子单位,它所做的数据修改要么全部执行,要么全部取消 一致性(Consistency):当事务完成后,所有数据必须处于一致性状态,即:事务所修改的数据必须遵循数据库中各种约束、规则要求,保持数据的完整性 隔离性(Isolation):一个事务所做的修改必须能够与其他事务所做的修改隔离开来;在并发处理过程中,一个事务所看到的数据状态必须为另一个事务处理前或后的数据 永久性(Durability):事务完成后,它对数据库所做的修改被永久保留下来。事务日志保证事务的永久性 事务分类 显式事务:由用户执行T-SQL事务语句而定义的事务,又称为用户定义事务 隐式事务:当前事务提交或回滚后,SQL自动开始的事务。使用implicit_transations选项打开隐式事务。 自动事务模式:在自动事务模式下,当一个语句被成功执行后,它被自动提交,而当它执行过程中产生错误时,则被自动回滚。自动事务模式是SQL的默认管理模式 事务分类 -自动模式下批的执行情况 在执行批的过程中,批中的一个语句发生错误,批中的所有语句将不被执行 示例: 备注 事务分类 -事务处理语句 begin transaction:建立一个显式事务 commit transaction:标识一个隐式或显式事务的结束 rollback transaction:将一个隐式或显式事务回滚到事务开始位置或指定的存储点位置 save transaction:在一个事务内建立一个存储点标记,使rollback transaction语句可使用该标记回滚部分事务操作 事务分类 -注意点 在定义一个事务时,begin transaction语句应与commit transaction或rollback transaction成对出现 事务定义语句可以嵌套,但只有最外层的begin transaction和commit transaction语句才能建立和提交事务;在回滚事务时也只能使用最外层定义的事务名或存储点标记 事务嵌套常用在存储过程或触发器内,应尽量避免事务的嵌套 在事务定义中,不能使用数据库选项设置或系统存储过程修改master数据库 事务分类- (示例) 建立一个用户定义事务及事务的回滚操作和事务中的存储点回滚 示例: 备注 事务分类 - (示例2) 备注中的例子说明隐式事务的处理过程。在打开implicit_transactions连接选项后,自动进入第一个隐式事务。在前一个隐式事务提交或回滚后,SQL自动进入下一个新的隐式事务。 触发器 触发器特点与应用范围 是一种特殊类型的存储过程,基于某个表或视图(触发表、触发视图)的一个或多个列创建,用于监控它们的insert、update、delete操作(触发操作),当发生以上操作时自动执行事先定义的步骤,可进行复杂的数据完整性监测和约束 特点与应用范围-特点 不能直接调用,只有在对触发器表的数据进行更改时,才自动执行 不能传递和接受参数 触发器建立在表一级,与指定的数据修改事件相对应 触发器可以实施更为复杂的数据完整性约束,例如跨数据库的参照性约束 特点与应用范围-优点 数据库中跨越相关表的级联修改 无论什么原因对触发器表或视图的数据进行修改时,都能激活触发器,从而对数据实施完整性检查 触发器能够实施比primary key约束、check约束和规则对象等更为复杂的检查和操作 定义自定义的错误信息 特点与应用范围 -触发器vs约束 在SQL Server的早期版本中,通常使用触发器来实现参照完整性 6.0以后版本中使用PK和FK来实现简单的参照完整性,但对于要参照其他数据库对象的参照完整性约束只能使用触发器 CHECK约束只能引用当前列(列级)或当前表(表级)的列值,而触发器则可以引用其他表的列值 触发器可以是后反应的,而约束是前反应的 创建触发器 语法: create trigger trigger_name on {table | view} [with encryption] { for | after |
显示全部
相似文档