全套课件 SQL Server 2008数据库开发经典案例教程--吕玉桂.ppt

全套课件 SQL Server 2008数据库开发经典案例教程--吕玉桂.ppt

  1. 1、本文档共292页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
触发器的类型 DML触发器 DML 触发器是当数据库服务器中发生数据操作语言 (DML) 事件时要执行的操作。 DDL触发器 DDL 触发器是一种特殊的触发器,它在响应数据定义语言 (DDL) 语句时触发。 登录触发器 登录触发器将为响应 LOGON 事件而激发存储过程。 DML触发器的种类 AFTER触发器 AFTER触发器要求只有执行某一操作INSERT、UPDATE、DELETE之后触发器才被触发且只能在表上定义 INSTEAD OF触发器 可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器 CLR触发器 CLR 触发器可以是 AFTER 触发器或 INSTEAD OF 触发器,它将执行在托管代码(在 .NET Framework 中创建并在 SQL Server 中上载的程序集的成员)中编写的方法,而不用执行 Transact-SQL 存储过程。 AFTER触发器 AFTER触发器包括: INSERT触发器:当向表中插入数据时触发,自动执行触发器所定义的SQL语句。 UPDATE触发器:当更新表中某列、多列时触发,自动执行触发器所定义的SQL语句。 DELETE触发器:当删除表中记录时触发,自动执行触发器所定义的SQL语句。 触发器的两个特殊表 插入表(inserted表) 删除表(deleted表): 这两个表是逻辑表,并且是由系统管理的,存储在内存中,不是存储在数据库中,因此,不允许用户直接对其修改。 inserted 和deleted 表 触发器触发时: 系统自动在内存中创建deleted表或inserted表 只读,不允许修改;触发器执行完成后,自动删除 inserted 表 临时保存了插入或更新后的记录行 可以从inserted表中检查插入的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 deleted 表 临时保存了删除或更新前的记录行 可以从deleted表中检查被删除的数据是否满足业务需求 如果不满足,则向用户报告错误消息,并回滚插入操作 inserted 和deleted 表 修改操作 inserted表 deleted表 增加(INSERT)记录 存放新增的记录 ------ 删除(DELETE)记录 ----- 存放被删除的记录 修改(UPDATE)记录 存放更新后的记录 存放更新前的记录 inserted表和deleted表存放的信息 创建触发器 语法: CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR [DELETE, INSERT, UPDATE] AS T-SQL语句 GO WITH ENCRYPTION表示加密触发器定义的SQL文本 DELETE, INSERT, UPDATE指定触发器的类型 插入触发器 问题:在类别表中插入数据时不能插入名称相似度比较高的类别,如:类别“数据库”和“数据库基础”我们认为是相似的名称,即前4个字符相同的类别判定为相同类别。 CREATE TRIGGER Insert_Category ON Category FOR INSERT AS DECLARE @name VARCHAR(20) DECLARE @count INT SELECT @name=categoryName FROM inserted SELECT @count=count(*) FROM Category WHERE substring(CategoryName,1,4) LIKE @name+ % IF(@count0) BEGIN PRINT 不能插入相同的类别名称 ROLLBACK TRANSACTION END 测试代码:? INSERT INTO category VALUES(‘计算机基础‘) 修改触发器 问题:允许用户修改书的出版日期,新的出版日期最多比旧的出版日期晚一个月,并且要小于等于系统日期,否则修改失败。 CREATE TRIGGER UPDATE_bookinfo ON BookInfo FOR UPDATE AS DECLARE @old DATETIME DECLARE @new DATETIME --获取旧的出版日期 SELECT @old=PublishDate FROM deleted --获取新的出版日期 SELECT @new=PublishDate FROM inserted --日期差值最大为

文档评论(0)

pehalf + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7201060146000004

1亿VIP精品文档

相关文档