第05章-数据库完整性剖析.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第05章-数据库完整性剖析

5.6 触发器 5.6.1 定义触发器 5.6.2 激活触发器 5.6.3 删除触发器 5.6.3 删除触发器 删除触发器的SQL语法: DROP TRIGGER 触发器名 ON 表名; 触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除。 [例] 删除教师表Teacher上的触发器Insert_Sal DROP TRIGGER Insert_Sal ON Teacher; 5.7 小结 数据库的完整性是为了保证数据库中存储的数据是正确的,即符合现实语义 使用约束实现完整性的机制 完整性约束定义机制 完整性检查机制 违背完整性约束条件时RDBMS应采取的动作 使用触发器实现完整性的机制 SQL Server 中的触发器定义 CREATE TRIGGER trigger_name ON { table | view } { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [,] [ DELETE ] [,] [ UPDATE ] } AS sql_statement [ ...n ] AFTER:指定触发器只有在触发SQL语句中指定的所有操作都已成功执行后才激发。 INSTEAD OF:指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作。 { [DELETE] [,] [INSERT] [,] [UPDATE] }:指定触发器的类型,即指定在表或视图上执行哪些数据修改语句时将激活触发器。 SQL Server触发器中的两个特殊表 执行触发器时,系统自动创建两个特殊的临时表: inserted表:表结构同触发器表,用于存储INSERT和UPDATE 语句所影响的行的副本。 deleted表:表结构同触发器表,用于存储DELETE和UPDATE语句所影响的行的副本。 触发器表 inserted deleted SQL Server触发器中的两个特殊表 临时表中的数据由系统自动维护: 执行INSERT时,新建行被同时添加到inserted表和触发器表中。 执行DELETE时,行从触发器表中删除,并传输到deleted表中。 执行UPDATE时,从触发器表中删除旧行,并传输到deleted表中,新建行被添加到inserted表。 只能在触发器中访问临时表中的数据,且不能修改其内容。 应用举例 例:库存表存放当前仓库中现有产品的情况, 出库表存放已经出库的产品的情况, 现需出15台电视机。 产品号 产品名 … 库存数量 01 计算机 … 10 02 电视机 … 20 03 DVD … 5 … … … … 产品号 出库日期 出库数量 01 2006.2.2 10 03 2006.2.15 5 02 2006.3.10 15 步骤:1、INSERT 出库表 VALUES(’02’,’2006.3.10’,15) 2、UPDATE 库存表 SET 库存数量 =库存数量 – 15 WHERE 产品号 = ’02‘ ① ② 出库表 库存表 应用举例 CREATE TRIGGER TR_出库表 ON 出库表 AFTER INSERT AS DECLARE @ID char(6), @num int,@tmp int SELECT @ID = 产品号, @num = 出库数量 FROM inserted SELECT @tmp = 库存数量 FROM 库存表 WHERE 产品号 = @ID IF @tmp = @num BEGIN UPDATE 库存表 SET 库存数量 = 库存数量 - @num WHERE 产品号 = @ID COMMIT TRAN END ELSE BEGIN ROLLBACK TRAN RAISERROR(库存数量不够!,16,1) END 执行:Insert 出库表 VALUES(‘02’,‘2006-3-10’,1) 可完成两个任务。 表设计举例 例:现有如下逻辑结构的表:库存表和出库表,库存表存放当前仓库中现有产品的情况,出库表存放已经出库的产品的情况, 产品号 产品名 … 库存数量 01 计算机 … 10 02 电视机 … 20 03 D

文档评论(0)

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

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

1亿VIP精品文档

相关文档