近來又要寫觸發器.所以寫了個夠..寫到有點小累.
在這裡記起一小段.作一個記錄吧
下面兩種方法都可以查到有哪此觸發器,
1.
select * from sysobjects where xtype='TR' and name like '%AOC%'
2
select * from sys.triggers
但第二種更可以查到一個觸發器是否處于禁用狀態.
對於啟用觸發器.可以單個單個地去啟用或禁用,當然也可以按表來啟用或禁用
下面語句就是對M_AOC表上所所有觸發器進行操作
disable trigger ALL on M_AOCenable 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_distributedIF OBJECT_ID ('tri_instead_of_update_M_AIC', 'TR') is NOT NULLDROP TRIGGER tri_instead_of_update_M_AICgoCREATE TRIGGER tri_instead_of_update_M_AIC ON M_AIC INSTEAD OF UPDATEASBEGIN...--you code hereEND
對於一般觸發器可以這樣操作
/*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_DistributedIF OBJECT_ID( 'tri_insert_M_AIC', 'TR') is not NULL DROP TRIGGER tri_insert_M_AICgoCREATE TRIGGER tri_insert_M_AIC ON M_AIC AFTER INSERTASBEGIN...--you code hereEND