欢迎来到天天文库
浏览记录
ID:51965562
大小:1.22 MB
页数:21页
时间:2020-03-26
《SQLServer2008数据库技术与应用全套配套课件熊发涯胡大威电子资源 10.3 管理存储过程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、任务10.4创建触发器单元10存储过程和触发器《SQLServer2008数据库技术及应用》任务内容创建触发器1修改触发器2触发器的应用3删除触发器4重命名触发器5禁用启用触发器61创建触发器创建触发器使用CREATETRIGGER命令,基本语法如下:CREATETRIGGERtrigger_nameON{table
2、view}[WITHENCRYPTION]{FOR
3、AFTER
4、INSTEADOF}{[DELETE][,][INSERT][,][UPDATE]}[WITHAPPEND][NOTFORREPLICATION]AS[{IFUPDATE(column)[{AND
5、O
6、R}UPDATE(column)][...n]}]sql_statement[...n]创建触发器11创建触发器参数说明如下:trigger_name:触发器的名称。table
7、view:在其上执行触发器的表或视图。(只有INSTEADOF触发器才能设置于视图上)WITHENCRYPTION:加密触发器的CREATETRIGGER语句文本。FOR/AFTER后触发器:只有在数据表的操作都已正确完成后才会激活触发器。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。INSTEADOF替代触发器:用触发器替代原来要执行的数据操作。在表或视图上,每个INSERT、UPD
8、ATE或DELETE语句只能定义一个INSTEADOF触发器。[DELETE][,][INSERT][,][UPDATE]:用于指定在表或视图上执行哪种操作时会激活触发器的关键字。必须至少指定一个选项,如果指定的选项多于一个,需用逗号分隔开。对于INSTEADOF类这三个选项最多只能有一个,而AFTER类则无此限制。[NOTFORREPLICATION]:当复制进程更改触发器所涉及的表时,不要执行该触发器。IFUPDATE(column):测试在指定的列上进行INSERT或UPDATE操作,不能用于DELETE操作,可以指定多列。因为已经在ON子句中指定了表名,所以在IFUPD
9、ATE子句的列名前不要包含表名。sql_statement:触发器的条件和操作,可以包含任意数量和种类的T-SQL语句。其中的T-SQL语句常常包含流控语句。创建触发器11创建触发器【问题10.16】创建触发器,每当修改学生表中信息时,在客户端显示“已修改学生表xs的数据”的消息。在查询窗口中执行如下SQL语句,如图所示:USEcjglGOCREATETRIGGERUpdate_xs_TriggerONxsFORUPDATEASPRINT’已修改xs表的数据。’GO创建触发器11创建触发器在查询窗口中执行如下语句。UPDATExsSET姓名=’周敏’WHERE学号=’00110
10、2’测试结果如图所示,可以看到学生表中学号为“001102”的数据行,姓名已经改为周敏。创建触发器12修改触发器用户可以使用ALTERTRIGGER语句修改触发器。【问题10.17】修改触发器,在确实修改学生表的数据后返回“已修改学生表xs的数据”,否则返回“不存在要修改的数据。”。在查询窗口中执行如下语句,结果如图所示。USEcjglGOALTERTRIGGERUpdate_xs_TriggerONxsFORUPDATEASIF(SELECTCOUNT(*)FROMinserted)<>0PRINT'已修改学生表xs的信息'ELSEPRINT'不存在要修改的数据。'GO修改触
11、发器22修改触发器在查询窗口中执行如下语句。UPDATExsSET姓名=‘周敏’WHERE学号=‘001300’结果如图所示,此时需要修改触发器,排除错误。修改触发器22修改触发器【问题10.18】在SQLServerManagementStudio中查看触发器Update_xs_Trigger的属性。具体操作步骤如下:(1)在“对象资源管理器”窗口中展开cjgl数据库。(2)依次展开“表”选项,“xs”选项,“触发器选项”。(3)如图所示,右击“Update_xs_Trigger”,在弹出的快捷菜单中选择“修改”命令,显示该触发器的定义,此时可以进行必要的修改。修改触发器23
12、触发器应用【问题10.19】创建替代触发器。修改学生表xs数据时,触发替代触发器,用输出“没有修改学生表xs中的数据”替代执行触发语句(UPDATE)。在查询窗口中执行如下语句。USEcjglGOALTERTRIGGERUpdate_xs_TriggerONxsINSTEADOFUPDATEASPRINT'没有修改学生xs表中的数据'GOUPDATExsSET出生时间='1990-3-20'WHERE姓名='刘敏'测试结果如续页图所示,从图中可以看出来学生表xs的“刘敏”的出生时间确实没有修
此文档下载收益归作者所有