触发器Trigger八.docx
- 文档编号:25922974
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:8
- 大小:16.25KB
触发器Trigger八.docx
《触发器Trigger八.docx》由会员分享,可在线阅读,更多相关《触发器Trigger八.docx(8页珍藏版)》请在冰豆网上搜索。
触发器Trigger八
触发器(Trigger)(八)
修改DML触发器
在ManagementStudio中修改触发器之前,必须要先查看触发器的内容,通过11.10.1节的第
(1)步到第(4)步,细心的读者可以已经发现,如图14所示,在【查询编辑器】对话框里显示的就是用来修改触发器的代码。
编辑完代码之后,单击【执行】按钮运行即可。
修改触发器的语法如下:
ALTERTRIGGER触发器名
ON数据表名或视图名
AFTERINSERT或DELETE或UPDATE
AS
BEGIN
--这里是要运行的SQL语句
END
GO
如果只要修改触发器的名称的话,也可以使用存储过程“sp_rename”。
其语法如下:
sp_rename‘旧触发器名’,’新触发器名’
值得一提的是修改触发器名称有可能会使某些脚本或存储过程运行出错。
删除DML触发器
在ManagementStudio中删除触发器,必须要先查到触发器列表,通过11.10.1节的第
(1)步到第(3)步,可以查看到数据表下的所有触发器列表,右击其中一个触发器,在弹出快捷菜单中选择【删除】选项,此时将会弹出【删除对象】对话框,在该对话框中单击【确定】按钮,删除操作完成。
用以下SQL语句也对可删除触发器:
DropTrigger触发器名
注意:
如果一个数据表被删除,那么SQLServer会自动将与该表相关的触发器删除。
禁用与启用DML触发器
禁用触发器与删除触发器不同,禁用触发器时,仍会为数据表定义该触发器,只是在执行Insert、Update或Delete语句时,除非重新启用触发器,否则不会执行触发器中的操作。
在ManagementStudio中禁用或启用触发器,也必须要先查到触发器列表,触发器列表里,右击其中一个触发器,在弹出快捷菜单中选择【禁用】选项,即可禁用该触发器。
启用触发器与上类似,只是在弹出快捷菜单中选择【启用】选项即可。
用以下AlterTable语句也禁用或启用触发器,其语法如下:
Altertable数据表名
Disable或Enabletrigger触发器名或ALL
用Disable可以禁用触发器,用Enable可以启用触发器;如果要禁用或启用所有触发器,用“ALL”来代替触发器名。
2005新增功能:
DDL触发器
DDL触发器是SQLServer2005新增的一个触发器类型,是一种特殊的触发器,它在响应数据定义语言(DDL)语句时触发。
一般用于数据库中执行管理任务。
与DML触发器一样,DDL触发器也是通过事件来激活,并执行其中的SQL语句的。
但与DML触发器不同,DML触发器是响应Insert、Update或Delete语句而激活的,DDL触发器是响应Create、Alter或Drop开头的语句而激活的。
一般来说,在以下几种情况下可以使用DDL触发器:
l数据库里的库架构或数据表架构很重要,不允许被修改。
l防止数据库或数据表被误操作删除。
l在修改某个数据表结构的同时修改另一个数据表的相应的结构。
l要记录对数据库结构操作的事件。
2005新增功能:
设计DDL触发器
只要注意到DDL触发器和DML触发器的区别,设计DDL触发器与设计DML触发器也很类似,下面详细讲述一下要怎么去设计一个DDL触发器。
建立DDL触发器的语句
建立DDL触发器的语法代码如下:
CREATETRIGGERtrigger_name
ON{ALLSERVER|DATABASE}
[WITH<ddl_trigger_option>[,...n]]
{FOR|AFTER}{event_type|event_group}[,...n]
AS{sql_statement[;][...n]|EXTERNALNAME<methodspecifier>[;]}
用中文取代一下英文可以看得更明白:
CREATETRIGGER触发器名
ONALLSERVER或DATABASE
FOR或AFTER
激活DDL触发器的事件
AS
要执行的SQL语句
其中:
lON后面的AllServer是将DDL触发器作用到整个当前的服务器上。
如果指定了这个参数,在当前服务器上的任何一个数据库都能激活该触发器。
lON后面的Database是将DDL触发器作用到当前数据库,只能在这个数据库上激活该触发器。
lFor或After是同一个意思,指定的是After触发器,DDL触发器不能指定的SteadOf触发器。
l激活DDL触发器的事件包括两种,在DDL触发器作用在当前数据库情况下可以使用以下事件:
CREATE_APPLICATION_ROLE
ALTER_APPLICATION_ROLE
DROP_APPLICATION_ROLECREATE_ASSEMBLY
ALTER_ASSEMBLY
DROP_ASSEMBLYALTER_AUTHORIZATION
_DATABASE
CREATE_CERTIFICATE
ALTER_CERTIFICATE
DROP_CERTIFICATECREATE_CONTRACT
DROP_CONTRACT
GRANT_DATABASE
DENY_DATABASE
REVOKE_DATABASECREATE_EVENT_NOTIFICATION
DROP_EVENT_NOTIFICATION
CREATE_FUNCTION
ALTER_FUNCTION
DROP_FUNCTIONCREATE_INDEX
ALTER_INDEX
DROP_INDEXCREATE_MESSAGE_TYPE
ALTER_MESSAGE_TYPE
DROP_MESSAGE_TYPECREATE_PARTITION_FUNCTION
ALTER_PARTITION_FUNCTION
DROP_PARTITION_FUNCTIONCREATE_PARTITION_SCHEME
ALTER_PARTITION_SCHEME
DROP_PARTITION_SCHEMECREATE_PROCEDURE
ALTER_PROCEDURE
DROP_PROCEDURECREATE_QUEUE
ALTER_QUEUE
DROP_QUEUECREATE_REMOTE_SERVICE
_BINDING
ALTER_REMOTE_SERVICE
_BINDING
DROP_REMOTE_SERVICE
_BINDINGCREATE_ROLE
ALTER_ROLE
DROP_ROLECREATE_ROUTE
ALTER_ROUTE
DROP_ROUTECREATE_SCHEMA
ALTER_SCHEMA
DROP_SCHEMACREATE_SERVICE
ALTER_SERVICE
DROP_SERVICECREATE_STATISTICS
DROP_STATISTICS
UPDATE_STATISTICSCREATE_SYNONYM
DROP_SYNONYM
CREATE_TABLEALTER_TABLE
DROP_TABLE
CREATE_TRIGGER
ALTER_TRIGGER
DROP_TRIGGERCREATE_TYPE
DROP_TYPE
CREATE_USER
ALTER_USER
DROP_USERCREATE_VIEW
ALTER_VIEW
DROP_VIEWCREATE_XML_SCHEMA
_COLLECTION
ALTER_XML_SCHEMA
_COLLECTION
DROP_XML_SCHEMA
_COLLECTION
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 触发器 Trigger