- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Deleted表和Inserted表 在触发器的执行过程中,SQL Server建立和管理两个临时的虚拟表:Deleted表和Inserted表。这两个表包含了在激发触发器的操作中插入或删除的所有记录。在执行INSERT或UPDATE语句之后所有被添加或被更新的记录都会存储在Inserted表中。 在执行DELETE或UPDATE语句时,从触发程序表中被删除的行会发送到Deleted表。 对于更新操作,SQL Server先将要进行修改的记录存储到Deleted表中,然后再将修改后的数据复制到Inserted表以及触发程序表。 为表customer创建一个名为test_tr的触发器,当执行添加、更新或删除时,激活该触发器。 创建test_tr触发器 CREATE TRIGGER test_tr ON customers FOR INSERT,UPDATE,DELETE AS SELECT * FROM inserted SELECT * FROM deleted customer表执行以下插入操作 INSERT INTO customer(CustomerID,CompanyName,Phone) VALUES(12346,张三,1234567) 例如,在 pubs 数据库里,存放着出版商 (publishers) 的信息、出版物的信息(titles)、出版 物与作者关联的信息 (titleauthor) 以及作者信息 (authors). 现在有一条出版商的信息被删除了, 则 所有由该出版商出版的出版物都应该将 pub_id 修改为 NULL,或者删除有关的出版物信息. 同样 titleauthor 表中的信息也应该相应的得到修改. 这 样关联到三张表的一致性维护问题,可以使用触发 器来实现. 设置 DELETE 触发器 大型数据库应用(SQL Server 2008) 又比如公司库存量(stock)必须保持在一 定水平以内. 用户可以设置一个触发器. 这样当 库存量超过标准时,就会向数据库管理员发送信 息以示警告. SQL Server 在有关触发器方面的功能非常 灵活、强大, 这是吸引数据库工程师选择使用 SQL Server 的重要原因之一. 在 SQL Server 中一张表可以有多个触发器. 触发器可以容纳非常复杂的 T-SQL 语句. 它是 一个独立的单元,作为一个事物来执行. 大型数据库应用(SQL Server 2008) 触发器的主要功能: ● 级联修改数据库的所有相关表. ● 撤销或回滚违反引用完整性的操作. ● 执行比检查约束(check)更复杂的约 束操作. ● 查找在数据修改前后的表状态之间的差 别,并根据差别分别采取相应的措施. ● 在一张表的同一类型的操作 (INSERT、 UPDATE 或 DELETE) 上设置多个 触发器,从而可以针对同样的修改语句执行不 同的多种操作. 大型数据库应用(SQL Server 2008) ● 表的拥有者处理触发器的权限不许转授. ● 可以在触发器中引用视图或临时表,但不 能在视图、临时表或系统表上创建触发器. ● 在执行修改语句时,触发器的执行是修改 语句事物的一部分. 所以,如果触发器执行不成 功,则整个修改事物将会回滚. ● 当使用约束、规则和默认值就可以实现预 定的数据完整性时,应优先考虑使用这三种措施. ● TRUNCATE TABLE 虽然在功能上与删 除操作类似, 但是它不会触发DELECT触发器运行. 大型数据库应用(SQL Server 2008) 注意 大型数据库应用(SQL Server 2008) 触发器的分类 触发器按照触发事件可分为3类,分别是数据操纵语言(DML)触发器、数据定义语言(DDL)触发器和数据库事件触发器,触发器作用见下表. 触发器用 CREATE 创建,DROP 删除, 用 ALTER 修改. 相应的操作也可以由 SSMS 进行. 创建触发器的语句必须写在批处理的第一行. 触发器是特殊的存储过程,所以适合于存储 过程的管理方式,都是适用于触发器. 所以可以 使用 sp_helptext, sp_help, sp_depends 等系统 存储过程. 大型数据库应用(SQL Server 2008) 2. 触发器的
原创力文档


文档评论(0)