触发器是一种特殊的存储过程,它可以在SQL server进行某个特定的表修改时由SQL server自动进行,还是一种实施完整性约束的手段。
DML触发器--After触发器(主要用于记录变更后的处理或检查,一旦发现错误可以回滚),Instead of触发器(一般用来取代原本的操作,是在记录变更之前发生的)。DML触发器是响应insert,update,delete语句激活的。
DDL触发器是响应一create,alter,drop开头的语句而激活。
创建After触发器(insert后操作)
create trigger tb1_insert
on tb1
after insert
as
begin
print '新增一条记录'
end
go
创建After触发器(update后操作)
create trigger tb1_update
on tb1
after update
as
begin
print '更改了一条记录'
end
go
创建After触发器(delete后操作)
create trigger tb1_delete\
on tb1
after delete
as
begin
print '删除一条记录'
end
go
创建Instead of触发器
create trigger tb1_insert
on tb1
instead of insert
as
begin
set nocount on;
declare
@id int,
@name varchar
set @id=(select id from inserted)
set @name=(select name from inserted)
if(@id>99999)
print 'id号出错'
end
go
设置After触发器被激活的次序
exec sp_settriggerorder
'tb1_insert1','first','insert'
go
exec sp_settriggerorder
'tb1_insert2','last' ,'insert'
go
创建DDL触发器(保护数据库中的数据表结构不被修改,数据表不被删除)
create trigger forbidoper
on database
for alter_table,drop_table
as
print '对不起,您不能对数据表进行操作'
roolback;
go
删除 Drop trigger ()
修改 Alter trigger()
重命名 sp_rename()
禁用 Disable trigger()
启用 Enable trigger()