• SQL Server >> 触发器函数 COLUMNS_UPDATED \UPDATE \TRIGGER_NESTLEVEL \EVENTDATA


    COLUMNS_UPDATED和UPDATE

    这两个函数都是用于表触发器里面判断字段是否被更新。区别是前者是位掩码来实现,比较绕,好处是可以检查多个字段。后者的用法就比较简单,就是把字段名称作为参数,但是只能单个字段。我觉得从代码可读性来说还是UPDATE比较好理解。

     

    TRIGGER_NESTLEVEL

    这个是用在防止触发器嵌套触发,例如触发器里面执行数据插入\更新 再触发当前触发器,从而导致进入循环,所以要如果当前触发内会对表再执行更新\插入,需要添加对TRIGGER_NESTLEVEL的检查,防止触发器嵌套层数太多。

    IF ( (SELECT TRIGGER_NESTLEVEL( OBJECT_ID('xyz') , 'AFTER' , 'DML' ) ) > 5 )  
       RAISERROR('Trigger xyz nested more than 5 levels.',16,-1)

     

    EVENTDATA

    用在DDL或者登录触发器里面(服务器或者数据库级别),EVENTDATA返回XML数据。DDL或者登录触发器事件触发后把事件数据发送给Service Broker。一般也就是做数据库审计或者监控需要用到这个函数,创建一个触发器来获取函数返回的数据,把数据写到日志表。

    参考:

    EVENTDATA (Transact-SQL)

  • 相关阅读:
    Blocks to Cubes
    poj1113凸包
    AtCoder Regular Contest 078D
    Codeforces Round #400
    hdu2196树形dp
    Codeforces Round #409
    Codeforces Round #424
    hdu1520树形dp第一题
    Codeforces Round #412
    poj2823单调队列
  • 原文地址:https://www.cnblogs.com/jenrrychen/p/16292384.html
Copyright © 2020-2023  润新知