ImageVerifierCode 换一换
格式:DOCX , 页数:6 ,大小:26.29KB ,
资源ID:3077205      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3077205.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(触发器的创建和使用.docx)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

触发器的创建和使用.docx

1、触发器的创建和使用一、 触发器的优点 触发器是自动执行的。当对表中的数据做任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。 触发器可以通过数据库中的相关表进行层叠更改。例如,可以子啊 t_student 表的 s_number 列上写入一个删除触发器,以使 t_score 表中的各匹配行采取删除操作。该触发器用 s_number 列作为唯一键,在 t_score 表中对各匹配行进行定位。 触发器可以强制限制。这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其他表中的列。二、 触发器的类型 AFTER 触发器:这种烈性的触发器将在数据变动(

2、INSERT、UPDATE 和 DELETE 操作)完成以后才被出发。可以对变动的数据进行检查,如果发现错误,将拒绝接受或回滚变动的数据。AFTER 触发器只能在表上定义。在同一个数据表中可以创建多个 AFTER 触发器。 INSTEAD OF 触发器:INSTEAD OF 触发器是 SQL Server 2000 中新增的功能。这种类型的触发器将在数据变动以前被触发,并取代变动数据的操作(INSERT、UPDATE 和 DELETE 操作) ,而去执行触发器定义的操作。INSTEAD OF触发器可以在表或视图上定义。在表或视图上,每个 INSERT、UPDATE 和 DELETE语句最多可以

3、定义一个 INSTEAD OF 触发器。三、 注意事项 CREATE TRIGGER 语句必须是批处理中的第一个语句。将该批处理中随后的其他所有语句解释为 CREATE TRIGGER 语句定义的一部分。 创建触发器的权期限默分配给表的所有者,且不能讲该权限转给其他用户。 触发器为数据库对象,其名称必须遵循标识符的命名规则。 只能在当前数据库中创建触发器但触发器可以应用当前数据库以外的对象。 TRUNCATE TABLE 语句不会引发 DELETE 触发器。 WRITETEXT 语句不会引发 INSERT 或 UPDATE 触发器。四、 使用 Transact-SQL 语句创建触发器(1 )

4、语法CREATE TRIGGER trigger_nameON table|view FOR | AFTER | INSTEAD OF DELETE , INSERT , UPDATE WITH APPEND NOT FOR REPLICATION AS IF UPDATE(column) AND|ORUPDATE(column) . . .n| IF (COLUMNS_UPDATED()bitwise_operatorupdated_bitmask)comparison_operatorcolumn_bitmask . . .nsql_statement . . .n(2 ) 代码意义 tr

5、igger_name:用于指定触发器的名称。触发器的名称必须符合 SQL Server 标识符规则,并且其名称在当前数据库中必须是唯一的。另外,还可以选择是否指定触发器所有者的名称。 table|view:用于指定在其上执行触发器的表或视图,有时称为触发器表或触发器试图。可以选择是否指定表或视图的所有者名称。 WITH ENCRYPTION:用于加密 syscomments 表中包含 CREATE TRIGGER语句文本的条目。使用 WITH ENCRYPTION 可防止触发器作为 SQL Server复制的一部分发布。 AFTER:用于规定此触发器只有在触发 SQL 语句中指定的所有操作都已

6、成功执行后才激发。所有的应用级联操作和约束检查也必须成功完成后,才能执行触发器。如果仅指定 FOR 关键字,则 AFTER 是默认设置。注意该类型触发器仅能在表上创建,而不能在视图上定义该触发器。 INSTEAD OF:用于规定执行的是触发器而不是执行触发器 SQL 语句,从而用触发器替代触发语句的操作。在表或视图上,每个 INSERT、UPDATE或 DELETE 语句最多可以定义一个 INSTEAD OF 触发器。INSTEAD OF 触发器不能在 WITH CHECK OPTION 的可更新视图上定义。如果只向指定的WITH CHECK OPTION 选项的可更新视图添加 INSTEAD

7、 OF 触发器,SQL Server 将产生一个错误。用户必须用 ALTER VIEW 删除该选项后才能定义INSTEAD OF 触发器。 DELETE , INSERT , UPDATE :用于指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许以任意顺序组合这些关键字。如果指定的选项多余一个,需用逗号分隔这些选项。 WITH APPEND:用于指定应该添加现有类型的其他触发器。只有当兼容级别(指某一数据库行为与以前版本的 SQL Server 兼容程度)是 65 或更低时,不应执行该触发器。 NOT FOR REPLICATION:表示当复制

8、进程更改触发器所涉及的表时,不应执行该触发器。 AS:触发器要执行的操作。 sql_statement:触发器的条件和操作。触发器条件指定其他准则,以确定DELETE、INSERT 或 UPDATE 语句是否导执行定触发器操作。 IF UPATE(column):用于测试在指定的列上进行的 INSERT 或 UPDATE 操作,不能用于 DELETE 操作,可以指定多列。因为在 ON 字句中指定了表名,所以在 IF UPDATE 子句的列名前不要包含表名。若要测试在多个列上进行的INSERT 或 UPDATE 操作,请在第一个操作后指定单独的UPDATE(column)子句。在 INSERT

9、操作中,IF UPDATE 将返回 TRUE 值,因为这些列插入了显示值或隐形值(NULL) 。 IF(COLUMNS_UPDATED():用于测试是否插入或更新了所涉及的列,仅用于 INSERT 或 UPDATE 触发器。 bitwise_operator:用于比较运算的位逻辑运算符。 updated_bitmask:整型位掩码,表示实际更新或插入的列。例如,表 t1 包含 C1、C2、C3 、C4 和 C5。假定表 t1 上有 UPDATE 触发器,若要检查列C2、C3 和 C4 是否都已更新,则指定值 14;若要检查是否只有列 C2 已更新,则指定值 2。 comparison_oper

10、ato:比较运算符。使用等号(=)检查 updated_bitmask中指定的所有列是否都实际进行更新。使用大于号()检查updated_bitmask 中指定的任一列或某些列是否已更新。 column_bitmask:检查列的整型位掩码,用来检查是否已更新或插入了这些列。(注:当创建触发器时,如果使用了相同名称的触 发器,后建立的触发器将会覆盖前面简历的触发器。用户不能在系 统表上创建用户自定义 的触发器。 )(3) 临时表inserted 表中存储着被 ISNERT 和 UPDATE 语句影响的新的数据行。执行DELETE 或 UPDATE 语句时,新的数据行被添加到基本表中,同事这些数据

11、行的备份复制到 inserted 临时表中。deleted 表中存储着被 DELETE 和 UPDATE 语句影响的旧数据行。执行 INSERT 或 UPDATE 操作时,指定的数据行从基本表中删除,然后被转移到 deleted 表中,然后将新的数据行同事插入基本表和 inserted 表中。 五、 示例(1) AFTER UPDATE、INSERT 触发器USE studentIF EXISTS(SELECT 那么 FROM sysobjects WHERE name=scoreCheckAND type=TR)DROP TRIGGER scoreCheckGOCREATE TRIGGER

12、scoreCheckON t_scoreFOR INSERT,UPDATEASIF UPDATE(score)PRINT AFTER 触发器开始执行BEGINDECLARE ScoreValue realSELECT ScoreValue=(SELECT score FROM inserted)IF ScoreValue100 OR ScoreValue0PRINT 输入的分数有误,请确认输入的考试分数!ENDGO触发 scoreCheckUSE studentGOPRINT 在 t_score 中插入记录时触发器执行结果:PRINT INSERT INTO t_score VALUES(99

13、52123,20010203,-35)INSERT INTO t_score VALUES(9952124,20010203,152)GOPRINT在 t_score 中修改记录时触发器执行结果:PRINT UPDATE t_score SET score=115 WHERE s_number=9952123UPDATE score=-65 WHERE s_number=9952124(2) AFTER DELETE 触发器USE studentGOIF EXISTS(SELECT name FROM sysobjects WHERE name=Stu_DeteleAND type=TR)DR

14、OP TRIGGER Stu_DeleteGOCREATE TRIGGER Stu_DeleteON t_studentFOR DELETEASPRINT 删除触发器开始执行DECLARE StuNum char(10)PRINT 把在 t_student 表中删除的记录的 s_number 赋值给局部变量SstuNum。 SELECT StuNum=s_number FROM deletedPRINT 开始查找并删除 t_score 表中的相关记录DELETE FROM t_score WHERE s_number=StuNumPRINT 删除了 t_score 表中的学好为 +RTRIM(

15、StuNum)+ 的记录。 触发 Stu_DeleteUSE studentGODELETE FROM t_student WHERE s_number=9952123DELETE FROM t_student WHERE s_number=9952124GO(3) INSTEAD OF 触发器USE studentGOIF EXISTS(SELECT name FROM sysobjects WHERE name=NotAllowDeleteAND type=TR)DROP TRIGGER NotAllowDeleteON t_sourseINSTEAD OF DELETEASPRINT I

16、NSTEAD OF 触发器开始执行PRINT 本表中的数据不允许被删除!不能执行删除操作GO触发 NotAllowDeleteUSE studentGODELETE FROM t_course WHERE c_number=20010203GO六、 查看、修改和删除触发器(1) 查看触发器 sp_help:用于查看触发器的一般信息,如触发器的名称、属性、类型和创建时间。sp_help 触发器名称 sp_helptext:用于查看触发器的正文信息。sp_helptext 触发器名称 sp_depends:用于查看指定触发器所引用的表或者指定的表设计到的所有触发器。sp_depends 触发器名称

17、sp_depends 表名(2) 修改触发器1. 使用 ALTER TRIGGER 命令语法修改:ALTER TRIGGER trigger_nameON table|view FOR | AFTER | INSTEAD OF DELETE , INSERT , UPDATE WITH APPEND NOT FOR REPLICATION AS IF UPDATE(column) AND|ORUPDATE(column) . . .n| IF (COLUMNS_UPDATED()bitwise_operatorupdated_bitmask)comparison_operatorcolumn_bitmask . . .nsql_statement . . .n2. 使用系统存储过程修改触发器名称sp_rename oldname,newname(3) 删除触发器1. 使用企业管理器删除触发器。2. 使用系统命令删除触发器。DROP TRIGGER trigger ,.n

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。