sql server触发器的例子

时间:2021-10-31 02:30:28
发布:thebaby   来源:脚本学堂     【  
本文介绍下,在sql server数据库中使用触发器的简单例子,有需要的朋友可以参考下,希望对你有一定的帮助。

原文地址:http://www.jbxue.com/db/13345.html

本节内容:

sql server触发器的例子

在sql server数据库中的触发器,需要用到两个逻辑表:
deleted 操作所变更的旧记录集
inserted 操作所产生的新记录集。

其中:

执行INSERT操作后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 -- www.jbxue.com
            insert into new_users(userid) values (@userid)
        end
        fetch next from rs into @userid
    end
    close rs
    deallocate rs
END

说明:
在用INSERT、DELETE、UPDATE更新表时,如果触发器执行的操作失败,对表的操作也会回滚,并提示触发器程序产生错误的位置与原因。