zoukankan      html  css  js  c++  java
  • sql server触发器的例子

    发布: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更新表时,如果触发器执行的操作失败,对表的操作也会回滚,并提示触发器程序产生错误的位置与原因。

  • 相关阅读:
    (6)在树莓派上截屏的方法
    (7)树莓派读物USB摄像头
    (4)给树莓派安装中文输入法Fcitx及Google拼音输入法
    (3)使用Android手机作为树莓派的屏幕
    (2)在树莓派安装运行在Python3上的OpenCV
    相机靶面尺寸和视场角换算
    STM32F103C8T6在Arduino IDE里编程
    项目(二) esp32-cam 网页图像人脸
    开发(一) ardunio环境配置 针对esp32-cam 更多例程
    [转] Compile、Make和Build的区别
  • 原文地址:https://www.cnblogs.com/linuxnotes/p/3409725.html
Copyright © 2011-2022 走看看