触发器(补充内容).ppt

上传人:罗晋 文档编号:9403152 上传时间:2021-02-24 格式:PPT 页数:20 大小:170KB
返回 下载 相关 举报
触发器(补充内容).ppt_第1页
第1页 / 共20页
触发器(补充内容).ppt_第2页
第2页 / 共20页
触发器(补充内容).ppt_第3页
第3页 / 共20页
触发器(补充内容).ppt_第4页
第4页 / 共20页
触发器(补充内容).ppt_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《触发器(补充内容).ppt》由会员分享,可在线阅读,更多相关《触发器(补充内容).ppt(20页珍藏版)》请在三一文库上搜索。

1、触发器(补充内容),回顾,代码阅读,下列系统存储过程的功能是: EXEC sp_helpconstraint stuInfo EXEC sp_helpindex stuMarks EXEC sp_renamedb stuDB,studentDB EXEC xp_cmdshell mkdir d:project 存储过程的参数分为哪两类? 根据您的理解,print语句和RAISERROR语句有什么区别,回顾,阅读代码,指出错误: CREATE PROCEDURE proc_stuInfo -定义存储过程 stuName VARCHAR(10), m INT OUTPUT, stuAge=18 I

2、NT AS .代码略 GO -调用存储过程 DECLARE s INT EXEC proc_stuInfo 张三,s,30 EXEC proc_stuInfo 张三,s EXEC proc_stuInfo stuAge=22,stuName=李四,m=s OUTPUT,目标,为什么需要触发器 触发器的工作原理 如何创建 INSERT触发器 UPDATE触发器 DELETE触发器,为什么需要触发器,生活案例:银行存取款系统 Bank表和Trans表:当张三取钱时如何自动更新Bank表?,最优的解决方案就是触发器: 它是一种特殊的存储过程 也具备事务的功能 它能在多表之间执行特殊的业务规则,赵二,

3、插入,什么是触发器 1,删除,触发器触发,赵二退休,赵二,员工表,退休员工表,什么是触发器2,触发器是在对表进行插入、更新或删除操作时自动执行的存储过程 触发器通常用于强制业务规则 触发器是一种高级约束,可以定义比用CHECK 约束更为复杂的约束 可执行复杂的SQL语句(if/while/case) 可引用其它表中的列,什么是触发器3,触发器定义在特定的表上,与表相关 自动触发执行 不能直接调用 是一个事务(可回滚),触发器的类型:,DELETE触发器 INSERT 触发器 UPDATE 触发器,创建触发器:,语法: WITH ENCRYPTION表示加密触发器定义的SQL文本 DELETE,

4、 INSERT, UPDATE指定触发器的类型,CREATE TRIGGER trigger_name ON table_name WITH ENCRYPTION FOR DELETE, INSERT, UPDATE AS T-SQL语句 GO,INSERT触发器,需求:当向交易信息表(trans)中插入一条交易信息时,我们应自动更新对应帐户的余额。 分析: 在交易信息表上创建INSERT触发器 从inserted临时表中获取插入的数据行 根据交易类型(transType)字段的值是存入/支取, 增加/减少对应帐户的余额。,INSERT触发器的工作原理:,插入记录行,触发insert触发器。向

5、inserted表中插入新行的副本,触发器检查inserted表中插入的新行数据,确定是否需要回滚或执行其他操作,DELETE触发器,需求:当删除交易信息表时,要求自动备份被删除的数据到表backupTable中 。 分析: 在交易信息表上创建DELETE触发器 被删除的数据可以从deleted表中获取,DELETE触发器的工作原理,删除记录行,触发delete触发器向deleted表中插入被删除的副本,触发器检查deleted表中被删除的数据,决定是否需要回滚或执行其他操作,UPDATE触发器,需求:跟踪用户的交易,交易金额超过20000元,则取消交易,并给出错误提示。 分析: 在bank表

6、上创建UPDATE触发器 修改前的数据可以从deleted表中获取 修改后的数据可以从inserted表中获取,UPDATE触发器的工作原理:,删除记录行,向deleted表中插入被删除的副本,检查deleted和inserted表中的数据,确定是否需要回滚或执行其他操作,向inserted表中插入被添加的副本,插入记录行,列级 UPDATE 触发器,UPDATE触发器除了跟踪数据的变化(修改)外,还可以检查是否修改了某列的数据 使用UPDATE(列)函数检测是否修改了某列,问题: 交易日期一般由系统自动产生,默认为当前日期。为了安全 起见,一般禁止修改,以防舞弊。,分析: UPDATE(列名

7、)函数可以检测是否修改了某列,触发器和存储过程的比较:,是一种特殊类型的存储过程。 主要通过事件进行触发而被执行;而存储过程通过名称直接被调用。 触发器是一个强大的工具,它使每个站点可以在有数据修改时自动强制理解业务规则。 触发器可用于sql server约束、默认值和规则的完整性约束。,规则,规则用于执行一些与 CHECK 约束相同的功能。使用 CHECK 约束是限制列值的首选标准方法。CHECK 约束还比规则更简明。一个列只能应用一个规则,但可以应用多个 CHECK 约束。CHECK 约束被指定为 CREATE TABLE 语句的一部分,而规则是作为单独的对象创建,然后绑定到列上。 示例:

8、CREATE RULE id_chk AS id BETWEEN 0 and 10000; GO CREATE TABLE cust_sample ( cust_id int PRIMARY KEY, cust_name char(50), cust_address char(50), cust_credit_limit money, ); GO sp_bindrule id_chk, cust_sample.cust_id; GO,触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,触发器通常用于强制业务规则 触发器还是一个特殊的事务单元,当出现错误时,可以执行ROLLBACK TRANSACTION回滚撤销操作 触发器一般都需要使用临时表:deleted表和inserted表,它们存放了被删除或插入的记录行副本 触发器类型: INSERT触发器 UPDATE触发器 DELETE触发器,总结,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1