十、DLL触发器
(〇)语法格式
CREATE TRIGGER trigger_name
ON <ALL SERVER|DATABASE>
[WITH ENCRYPTION]
[FOR|AFTER]<事件类型或事件组>[,...n]
AS
[BEGIN]
T-SQL语句
[END]
参数说明如下:
- ALL SERVER:将DDL触发器的作用域应用于当前服务器。
- DATABASE:将dDEL触发器的作用域应用于当前数据库。
- WITH ENCRYPTION:对CREATE TRIGGER 语句的文本进行加密。使用WITH ENCRYPTION可以防止将触发器作为SQL Server复制的一部分进行发布。
- 事件类型:执行之后将导致激发DDL触发器的T-SQL语句事件的名称。例如CREATE、ALTER、DROP等操作。
- 事件组:预定义的T-SQL语句事件分组的名称。执行任何属于事件组的T-SQL语句事件之后,都将激发DDL触发器。
- T-SQL语句:指定触发器所执行的T-SQL语句。
-- 在服务器上创建DDL触发器来防止服务器中的任意一个数据库被修改或删除。
create trigger tr_safety1
on all server --保护当前服务器中的所有数据库
for drop_database,alter_database --被删除或修改
as
begin
print '要删除和修改数据库之前,你必须先禁用触发器tr_safety1!'
rollback
end
GO
-- 在数据库上创建DDL触发器来防止数据库中的任意一个表被修改或删除
USE Library --保护"Library"数据库
GO
create trigger tr_safety2
on database --保护数据库中的数据表
for drop_table,alter_table --被删除或修改
as
begin
print '要删除和修改表之前,你必须先禁用触发器tr_safety2!'
rollback
end
GO