• 列级触发器 SQL Server


    列级触发器就是对表中的某列进行添加或修改时所执行的触发器。
    建立列级触发器与建立触发器的语法是相同的,只是在创建时使用IF UPDATE(column)参数。
    语法:
    CREATE TRIGGER trigger_name
    ON { table | view }
    [ WITH ENCRYPTION ]
    {
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
    [ WITH APPEND ]
    [ NOT FOR REPLICATION ]
    AS
    [ { IF UPDATE ( column )
    [ { AND | OR } UPDATE ( column ) ]
    [ ...n ]
    | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
    { comparison_operator } column_bitmask [ ...n ]
    } ]
    sql_statement [ ...n ]
    }
    }
    参数说明:
    IF UPDATE (column):测试在指定列上进行的INSERT或UPDATE操作,不能用于DELETE操作,可以指定多列。因为在ON子句中指定了表名,所以在 IF UPDATE子句中的列名前不要包含表名。若要测试在多个列上进行的INSERT或UPDATE操作,可在第一个操作后指定单独的 UPDATE(column)子句。在INSERT操作中IF UPDATE将返回TRUE值,因为这些列插入了显式值或隐性(NULL)值。
    本示例在“MR_SQL”数据库的“MR_Stu_XX”表中创立一个列级触发器,当添加或修改“MR_Stu_XX”表中的“学生姓名”字段时,将在创建的“MR_Stu_JL”表中加以记录。
    使用Transact-SQL建立列级触发器
    操作步骤如下:
    (1)打开SQL查询分析器。
    (2)SQL语句如下:
    在MR_SQL数据库中创建数据表MR_Stu_JL,用于记录修改MR_Stu_XX表时的时间、用户名等。
    USE MR_SQL
    GO
    CREATE TABLE MR_Stu_JL
    (
    Data datetime,
    MR_id char(4),
    state varchar(16),
    MR_name varchar(30)
    )
    GO
    在“MR_Stu_XX”表中创建列级触发器“TRI_Stu_JL”,对“MR_Stu_XX”表的“学生编号”进行添加、修改时执行“TRI_Stu_JL”触发器。
    CREATE TRIGGER TRI_Stu_JL ON dbo.MR_Stu_XX
    FOR INSERT,UPDATE
    AS
    DECLARE @id char(4)
    Select @id=学生编号 from Inserted
    if UPDATE(学生姓名)
    INSERT MR_Stu_JL VALUES(Getdate(),@id,'修改学生姓名',user_name())
    GO

  • 相关阅读:
    【强行点出机械师天赋,修复无脸男储钱罐】
    【自由随想录(二)】
    【自由随想录(一)】
    iOS Alamofire插件使用方法
    iOS获取设备ip地址(OC版)
    获取位置
    objective-c 开发最简单的UITableView时数据进不去的问题
    java 获取真实IP
    数据库添加外键
    mysql 清库
  • 原文地址:https://www.cnblogs.com/johnchain/p/2798128.html
Copyright © 2020-2023  润新知