近来又要写触发器.所以写了个够..写到有点小累.
在这里记起一小段.作一个记录吧
下面两种方法都可以查到有哪此触发器,
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