sql中触发器(概念,类型,insert触发器).ppt【推荐-PPT】

上传人:开*** 文档编号:93221324 上传时间:2019-07-18 格式:PPT 页数:17 大小:1.43MB
返回 下载 相关 举报
sql中触发器(概念,类型,insert触发器).ppt【推荐-PPT】_第1页
第1页 / 共17页
sql中触发器(概念,类型,insert触发器).ppt【推荐-PPT】_第2页
第2页 / 共17页
sql中触发器(概念,类型,insert触发器).ppt【推荐-PPT】_第3页
第3页 / 共17页
sql中触发器(概念,类型,insert触发器).ppt【推荐-PPT】_第4页
第4页 / 共17页
sql中触发器(概念,类型,insert触发器).ppt【推荐-PPT】_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《sql中触发器(概念,类型,insert触发器).ppt【推荐-PPT】》由会员分享,可在线阅读,更多相关《sql中触发器(概念,类型,insert触发器).ppt【推荐-PPT】(17页珍藏版)》请在金锄头文库上搜索。

1、目标,理解触发器的概念及类型,理解插入触发器的使用,问题引入,对于studentdb数据库, 在学生信息表中插入一条记录需要判断插入的日期(Stu_Birthday)比当前日期还大,则不允许插入,并提示错误。对于这个问题,需要设计一个触发器来实现。,How To ?,触发器概念,触发器(Trigger)是一种特殊的存储过程。触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用来确保复杂的业务规则和实施数据完整性。,1. 数据修改语言(DML)触发器 2. 数据定义语言(DDL)触发器,SQL Server 2005支持下面的触发器类型:,触发器概念(续),触发器对实施数据库的完整

2、约束性特别有用,它可用于实现各种特性,包括: 约束和触发器的区别:P221,1. 审核更改 2. 级联操作 3. 强制互联 4. 存储过程引用,DML触发器,DML触发器是与数据库表结合在一起的,每当表中数据受到数据操作语句INSERT、UPDATE、DELETE的影响时,设置于该表的触发器被自动触发。 使用Transact-SQL语句创建DML触发器的语法如下:,CREATE TRIGGER trigger_name ON table | view WITH ENCRYPTION FOR | AFTER | INSTEAD OF INSERT , UPDATE , DELETE AS sql

3、_statementn,触发器名称,触发器表或触发器视图,是否加密,后触发器,只执行触发器中定义的SQL语句,激活触发器的DML语句,DML触发器(续),为了管理触发器操作,Transact-SQL定义了两个逻辑表,它们的字段结构和触发器所定义的目标表是一致的。其中一个逻辑表命名为deleted(删除表),另一个命名为inserted(插入表)。这些逻辑表中的数据来自目标表中的记录,根据引发触发器的数据修改语句而定:,UPDATE 对于目标表中UPDATE语句更改的每条记录来说,在任何修改开始以前,记录的一份拷贝放置到deleted表中;在所有修改操作结束以后,记录的一份拷贝放置到insert

4、ed表中。,DELETE 目标表中DELETE语句删除的每条记录都放置到deleted表中,inserted表是空的。,INSERT 目标表中INSERT语句添加的每条记录都放置到inserted表中,deleted表是空的。,DDL触发器,像DML触发器一样,DDL触发器将激发存储过程以响应事件。它们会为响应多种数据定义语言 (DDL) 语句而激发。这些语句主要是以CREATE、ALTER 和 DROP 开头的语句。 用途如下:,1. 要防止对数据库架构进行某些更改。 2. 希望数据库中发生某种情况以响应数据库架构中的更改。 3. 要记录数据库架构中的更改或事件。,DDL触发器(续),使用T

5、ransact-SQL语句创建DDL触发器的语法与创建DML触发器的语法类似:,CREATE TRIGGER trigger_name ON DATABASE WITH ENCRYPTION FOR CREATE_ TABLE , DROP_TABLE , ALTER_TABLE .n AS sql_statement .n ,触发器名称,执行触发器的数据库,加密选项,激活触发器的DDL语句,INSERT触发器,当试图插入数据到触发器所定义的目标表中时,INSERT触发器被激发,同时,需要插入到目标表中的数据被放置到inserted表中。 创建INSERT触发器的语法如下:,CREATE TR

6、IGGER trgInsertTb_Stu_Info ON Tb_Stu_Info FOR INSERT AS DECLARE BirthDate datetime BEGIN SELECT BirthDate = inserted.Stu_Birthday FROM inserted IF(BirthDate getdate() BEGIN RAISERROR(Stu_Birthday字段所表示出生日期在当前日期之后,插入数据失败. , 16, 1) ROLLBACK TRANSACTION END END,解决方案,分析:创建一个INSERT触发器,在插入数据的时候自动触发进行检查。所需S

7、QL语句如下:,CREATE TRIGGER trgInsertTb_Stu_Info ON Tb_Stu_Info FOR INSERT AS DECLARE BirthDate datetime BEGIN SELECT BirthDate = inserted.Stu_Birthday FROM inserted IF(BirthDate getdate() BEGIN RAISERROR(年龄输入有误,请检查 , 16, 1) ROLLBACK TRANSACTION END END,解决方案(续),测试:插入一条错误的数据,语句如下:,INSERT INTO Tb_Stu_Info

8、VALUES(ZZ0820090355,周济,男,2010-7-9,北京),执行后将会得到错误提示,并且插入失败。,课堂练习,对于studentdb数据库, 在学生信息表中插入一条记录,需要判断插入的学生性别是否为男或女,如果为空或其他,则不允许插入,并提示错误。对于这个问题,需要设计一个INSERT触发器来实现。,小结,触发器是一种特殊的存储过程,主要用于确保复杂的业务规则和实施数据完整性。本节主要讲述了触发器的相关知识。,1. 触发器的特点及类型。 2. INSERT触发器的创建和使用。 3. 两个逻辑表:deleted(删除表)和inserted(插入表)。,作业,对于studentdb数据库, 在学生信息表中插入一条记录,需要判断插入的学生的学号和姓名是否为空。如果为空,则不允许插入,并提示错误。对于这个问题,请设计一个INSERT触发器来实现。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号