sql server触发器的简单例子
本文导语: 本节内容: sql server触发器的例子 在sql server数据库中的触发器,需要用到两个逻辑表: deleted 操作所变更的旧记录集 inserted 操作所产生的新记录集。 其中: 执行INSERT操作后deleted逻辑表为空,inserted逻辑表有数据; 执行D...
本节内容:
sql server触发器的例子
在sql server数据库中的触发器,需要用到两个逻辑表:
deleted 操作所变更的旧记录集
inserted 操作所产生的新记录集。
其中:
执行DELETE操作后inserted逻辑表为空,deleted逻辑表有数据;
执行UPDATE操作后两个逻辑表都有数据,deleted为旧记录集,inserted为新记录集。
以上操作变更几条记录,逻辑表就会产生几条记录,多条记录可以在触发器中用游标处理。
例子:
--//sql server触发器的例子
CREATE TRIGGER qf_trigger
ON User_table
for INSERT,DELETE,UPDATE
AS
BEGIN
declare @userid varchar(20)
--保存旧值
declare rs cursor for
select userid from deleted
open rs
fetch next from rs into @userid
while @@fetch_status=0
begin
if update(用户名)
insert into old_users(userid) values (@userid)
fetch next from rs into @userid
end
close rs
deallocate rs
--保存新值
declare rs cursor for
select userid from inserted
open rs
fetch next from rs into @userid
while @@fetch_status=0
begin
if update(用户名)
begin
if(@userid='admin')
begin
raiserror('此用户名禁用!',10,1) with nowait
rollback
return
end
insert into new_users(userid) values (@userid)
end
fetch next from rs into @userid
end
close rs
deallocate rs
END
说明:
在用INSERT、DELETE、UPDATE更新表时,如果触发器执行的操作失败,对表的操作也会回滚,并提示触发器程序产生错误的位置与原因。