SQL触发器语法参考.doc
上传人:sy****28 上传时间:2024-09-14 格式:DOC 页数:4 大小:23KB 金币:18 举报 版权申诉
预览加载中,请您耐心等待几秒...

SQL触发器语法参考.doc

SQL触发器语法参考.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

18 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

SQL触发器语法参考语法CREATETRIGGERtrigger_nameON{table|view}[WITHENCRYPTION]{{{FOR|AFTER|INSTEADOF}{[INSERT][,][UPDATE]}[WITHAPPEND][NOTFORREPLICATION]AS[{IFUPDATE(column)[{AND|OR}UPDATE(column)][n]|IF(COLUMNS_UPDATED(){bitwise_operator}updated_bitmask){comparison_operator}column_bitmask[}]sql_statement[}}n]n]参数trigger_name是触发器的名称。触发器名称必须符合标识符规则,并且在数据库中必须唯一。可以选择是否指定触发器所有者名称。Table|view是在其上执行触发器的表或视图,有时称为触发器表或触发器视图。可以选择是否指定表或视图的所有者名称。WITHENCRYPTION加密syscomments表中包含CREATETRIGGER语句文本的条目。使用WITHENCRYPTION可防止将触发器作为SQLServer复制的一部分发布。AFTER指定触发器只有在触发SQL语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。如果仅指定FOR关键字,则AFTER是默认设置。不能在视图上定义AFTER触发器。INSTEADOF指定执行触发器而不是执行触发SQL语句,从而替代触发语句的操作。在表或视图上,每个INSERT、UPDATE或DELETE语句最多可以定义一个INSTEADOF触发器。然而,可以在每个具有INSTEADOF触发器的视图上定义视图。INSTEADOF触发器不能在WITHCHECKOPTION的可更新视图上定义。如果向指定了WITHCHECKOPTION选项的可更新视图添加INSTEADOF触发器,SQLServer将产生一个错误。用户必须用ALTERVIEW删除该选项后才能定义INSTEADOF触发器。{[DELETE][,][INSERT][,][UPDATE]}是指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。对于INSTEADOF触发器,不允许在具有ONDELETE级联操作引用关系的表上使用DELETE选项。同样,也不允许在具有ONUPDATE级联操作引用关系的表上使用UPDATE选项。WITHAPPEND指定应该添加现有类型的其它触发器。只有当兼容级别是65或更低时,才需要使用该可选子句。如果兼容级别是70或更高,则不必使用WITHAPPEND子句添加现有类型的其它触发器(这是兼容级别设置为70或更高的CREATETRIGGER的默认行为)。有关更多信息,请参见sp_dbcmptlevel。WITHAPPEND不能与INSTEADOF触发器一起使用,或者,如果显式声明AFTER触发器,也不能使用该子句。只有当出于向后兼容而指定FOR时(没有INSTEADOF或AFTER),才能使用WITHAPPEND。以后的版本将不支持WITHAPPEND和FOR(将被解释为AFTER)。NOTFORREPLICATION表示当复制进程更改触发器所涉及的表时,不应执行该触发器。AS是触发器要执行的操作。sql_statement是触发器的条件和操作。触发器条件指定其它准则,以确定DELETE、INSERT或UPDATE语句是否导致执行触发器操作。当尝试DELETE、INSERT或UPDATE操作时,Transact-SQL语句中指定的触发器操作将生效。触发器可以包含任意数量和种类的Transact-SQL语句。触发器旨在根据数据修改语句检查或更改数据;它不应将数据返回给用户。触发器中的Transact-SQL语句常常包含控制流语言。CREATETRIGGER语句中使用几个特殊的表:?deleted和inserted是逻辑(概念)表。这些表在结构上类似于定义触发器的表(也就是在其中尝试用户操作的表);这些表用于保存用户操作可能更改的行的旧值或新值。例如,若要检索deleted表中的所有值,请使用:??SELECT*FROMdeleted?如果兼容级别等于70,那么在DELETE、INSERT或UPDATE触发器中,SQLServer将不允许引用inserted和deleted表中的text、ntext或image列。不能访问inserted和deleted表中的text、ntext和image值。若要在I