編寫程式,有時或為了偷懶,或為更簡單地實現所需功能,使用了觸發器。這可是把雙刃劍,用得不好,程式出現一些莫名其妙的錯誤,排查到最後,可能就是觸發器造成的。
基本原則是能不用則不用,另一方面,所謂存在即合理,既然存在,總會有使用它的場景。用到了,怎麼去管理去監控?乙個方法是通過sql語句,列出所有觸發器的資訊。
-- 檢視當前資料庫所有觸發器資訊
select
object_name(a.parent_obj) as [表名]
,a.name as [觸發器名稱]
,(case when b.is_disabled=0 then '啟用' else '禁用' end) as [狀態]
,b.create_date as [建立日期]
,b.modify_date as [修改日期]
,c.text as [觸發器語句]
from sysobjects a
inner join sys.triggers b
on b.object_id=a.id
inner join syscomments c
on c.id=a.id
where a.xtype='tr'
order by [表名]
最開始只要表名、觸發器名、觸發器語句,很容易就寫好語句,後來想把觸發器狀態也加上,自己沒頭緒,先網路搜尋,竟然沒能找到直接可用的資訊,有找到針對sql2000,只是自己早已不使用此版本,那麼再一次自力更生吧。
一時也不知道還有哪個系統檢視或表可以使用,同時發現sql server management studio的物件資源管理器中,可以看出觸發器狀態(圖示不同,禁用狀態的圖示右下角多出乙個紅色的小箭頭)。很自然想到利用sql server profiler捕獲語句,這招真是屢試不爽,果然如我所願,找到sys.triggers這個檢視,狀態問題,順利解決。
MSSQL手札二 MSSQL的觸發器
觸發器,就是在對錶做dml操作的時候,觸發一些其他的事件,觸發器一般用在check約束更加複雜的約束上面,是一種特殊的儲存過程,不可以被主動呼叫。語法如下 create trigger trigger name on with encryption 如果顯式宣告了 after 觸發器,則也不能使用該...
my sql 觸發器 MySQL檢視觸發器
檢視觸發器是指檢視資料庫中已經存在的觸發器的定義 狀態和語法資訊等。mysql 中檢視觸發器的方法包括 show triggers 語句和查詢 information schema 資料庫下的 triggers 資料表等。本節將詳細介紹這兩種檢視觸發器的方法。show triggers語句檢視觸發器...
觸發器 MSSQL常用操作
這裡只打算講解四部分了,也就最簡單 最常用的四部分。1 觸發器。定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。sql server ...