关于TSQL中触发器的只言片语

近来又要写触发器.所以写了个够..写到有点小累.

在这里记起一小段.作一个记录吧

下面两种方法都可以查到有哪此触发器,
1.

select * from sysobjects where xtype='TR' and name like '%AOC%'

2

select * from sys.triggers

但第二种更可以查到一个触发器是否处于禁用状态.

对于启用触发器.可以单个单个地去启用或禁用,当然也可以按表来启用或禁用

下面语句就是对M_AOC表上所所有触发器进行操作

disable trigger ALL on  M_AOC
enable trigger ALL on  M_AOC

对于一些需要更新前就作检查的操作.需要用到instead_of触发器

其语句如下.

/*
EnumType(NodeType)    监控系统数据的种类    
        STATION=0    局、站
        DEVICE=1    设备
        DI=2    数字输入量(包含多态数字输入量)
        AI=3    模拟输入量
        DO=4    数字输出量
        AO=5    模拟输出量

OperationType(OperateFlag)        对象属性修改类型        
                ADDNONODES=0        新增(无子节点)
                ADDINNODES=1        新增(含子节点)
                DELETE=2                删除
                MODIFYNONODES=3        修改(仅修改本节点)
                MODIFYINNODES=4        修改(涉及到子节点)

            m_station    m_device    m_4Remote
    insert    1            1            0
    update    3            3            3
    delete    2            2            2
*/
-- this trigger for avoid updating the same data from LSC to CSC_distributed
IF OBJECT_ID ('tri_instead_of_update_M_AIC', 'TR') is NOT NULL
DROP TRIGGER tri_instead_of_update_M_AIC
go

CREATE TRIGGER tri_instead_of_update_M_AIC
   ON M_AIC
   INSTEAD OF UPDATE
AS
BEGIN
...
--you code here
END

对于一般触发器可以这样操作

/*
EnumType(NodeType)    监控系统数据的种类    STATION=0    局、站
        DEVICE=1    设备
        DI=2    数字输入量(包含多态数字输入量)
        AI=3    模拟输入量
        DO=4    数字输出量
        AO=5    模拟输出量

OperationType(OperateFlag)        对象属性修改类型        
                ADDNONODES=0        新增(无子节点)
                ADDINNODES=1        新增(含子节点)
                DELETE=2                删除
                MODIFYNONODES=3        修改(仅修改本节点)
                MODIFYINNODES=4        修改(涉及到子节点)

            m_station    m_device    m_4Remote
    insert    1            1            0
    update    3            3           3
    delete    2            2            2
*/


USE CSC_Distributed

IF OBJECT_ID( 'tri_insert_M_AIC', 'TR') is not NULL
    DROP TRIGGER tri_insert_M_AIC
go



CREATE TRIGGER tri_insert_M_AIC
   ON M_AIC
   AFTER INSERT
AS
BEGIN
...
--you code here
END
原文地址:https://www.cnblogs.com/vimmer/p/2779248.html