欢迎来到天天文库
浏览记录
ID:40886703
大小:92.00 KB
页数:7页
时间:2019-08-09
《触发器学习资料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、触发器触发器是SQLServer提供给程序员和数据库分析员确保数据完整性的一种方法。这些方法对于那些经常被大量的不同应用程序访问的数据库相当有用,因为它们使数据库增强了应用规则,而应用规则是依赖于应用软件的。1.SQLServer触发器的概念SQLServer有效地管理信息的能力来源于它在系统中控制数据的能力。存储过程的建立,使用户能够在服务器上执行逻辑,通过规则和默认值去帮助数据库更进一步地管理信息。SQLServer在信息被写入数据库之前确认规则和默认值。这对于信息是一种“预过滤器”,并且能基于数据项控制数据库活动的作用阻止数据项的活动。触发器是在数据更新后执行的“后
2、置过滤器”,并且SOLServer已经确认了这些规则、默认值等。触发器是SQLServer执行的特殊类型的存储过程,它发生在对于一个给定表的插入、修改或删除操作执行后。由于触发器是在操作有效执行后才被运行,在修改中它们代表“最后动作”。假如触发器导致的一个请求失败的话,SOLServer将拒绝信息更新,并且对那些倾向于事务处理的应用程序返回一个错误消息。触发器最普遍的应用是实施数据库中的商务规则,当然在维持引用完整性方面,外键要比触发器更快,但触发器能够维持那些外键所不能处理的复杂关系。触发器不会明显影响服务器的性能。它们经常被用于增强那些在其他的表和行上进行很多级联操作
3、的应用程序的功能。2创建触发器创建触发器的用户必须是该数据库的拥有者,当添加一个触发器到列、行或表的时候,就会改变怎样使表能够被访问,怎样使其他对象能够与之关联等。因此,实际上正在改变数据库的模式。当然这种类型的操作为数据库拥有者所保留,以便防止有人无意中修改了系统的布局格式。创建触发器相当于说明一个存储过程,并且它有相似的语法。⑴创建触发器的语法:CREATETRIGGERtrigger_nameONtable[WITHENCRYPTION]{{FOR{[DELETE][,][INSERT][,][UPDATE]}[WITHAPPEND][NOTFORREPLICATI
4、ON]ASSql_statement[…n]}│{FOR{[INSERT][,][UPDATE]}[WITHAPPEND][NOTFORREPLICATION]AS{IFUPDATE(column)[{AND│OR}UPDATE(column)][…n]│IF(COLUMNS_UPDATED()bitwise_operator)updated_bitmask){comparison_operator}column_bitmask[…n]}sql_statement[…n]}}上述语句中的trigger_name为所定义的触发器名称;关键字INSERT,UPDATE,DEL
5、ETE定义了触发器的作用域,后者决定了启动触发器的操作;Sql_statement为包含在触发器中的任何合法的SQL语句。⑵用SQLEnterpriseManager来创建触发器在Windows开始菜单中执行“程序
6、MicrosoftSQLServer7.0
7、EnterpriseManager”命令,进入EnterpriseManager界面。在EnterpriseManager中展开SQLServerGroup,再展开Database项,选择要创建触发器的数据库(如PROJECT),再选中要创建触发器的表(如J),按右键,在弹出的菜单上选择AllTasks命令,再选Ma
8、nageTriggers命令,如图33所示,弹出一个“Triggerproperties…”窗口,如图34所示,在该窗口中输入触发器代码。3.Inserted和deleted表当触发器被执行时,SQLServer创建一个或两个临时表(Inserted或者deleted表)。当一个记录插入到表中时,相应的插入触发器创建一个inserted表,该表镜像该触发器相连接的表的列结构。例如,当用户在J表中插入一行时,J表的触发器使用J表的列结构创建inserted表。对于插入到J表的每一行,相应地在inserted表中也包括该行。deleted表也镜象触发器相连接的表的列结构。当执
9、行一条DELETE语句时从表中删除的每一行都包含在删除触发器内的deleted表中。图16.33选择ManageTriggers图16.34TriggersProperties窗口被UPDATE语句触发的触发器创建两个表inserted和deleted表,这两个表和它们相连接的表有相同的列结构。deleted和inserted表分别包含相连接表中数据的“前后”快照。例如,假设用户执行下面的语句:UPDATEJSETJNO=’J10’WHEREJNO=’S8’当该语句被执行时,J表中的更新触发器被触发。在触发器的inserted
此文档下载收益归作者所有