概述,列說明,套用示例,
概述
sys.triggers是sqlserver2005版本中新增一個目錄視圖,它存儲了當前資料庫中的所有觸發器信息,在功能上大致和sqlserver2005之前版本的select * from sysobjects where xtype='tr'的功能一樣。
列說明
列名 | 數據類型 | 說明 |
---|---|---|
name | sysname | 觸發器名稱。DML 觸發器名稱的架構範圍。DDL 觸發器名稱的作用域取決於父實體。 |
object_id | int | 對象標識號。在資料庫中是唯一的。 |
parent_class | tinyint | 觸發器的父類。 0 = DDL 觸發器的資料庫。 1 = DML 觸發器的對象或列。 |
parent_class_desc | nvarchar(60) | 觸發器的父類的說明。 DATABASE OBJECT_OR_COLUMN |
parent_id | int | 觸發器的父實體的 ID,如下所示: 0 = 父實體為資料庫的觸發器。 對於 DML 觸發器,此值為定義了 DML 觸發器的表或視圖的 object_id。 |
type | char(2) | 對象類型: TA = 程式集 (CLR) 觸發器 TR = SQL 觸發器 |
type_desc | nvarchar(60) | 對象類型的說明。 CLR_TRIGGER SQL_TRIGGER |
create_date | datetime | 觸發器的創建日期。 |
modify_date | datetime | 上次使用 ALTER 語句修改對象的日期。 |
is_ms_shipped | bit | 由內部 SQL Server 2005 組件代表用戶創建的觸發器。 |
is_disabled | bit | 觸發器被禁用。 |
is_not_for_replication | bit | 觸發器是作為 NOT FOR REPLICATION 創建的。 |
is_instead_of_trigger | bit | 1 = INSTEAD OF 觸發器。 0 = AFTER 觸發器。 |
套用示例
1,利用sql查詢資料庫中所有的觸發器
select * from sys.triggers
2,設定資料庫中觸發器的招待順序
可利用sp_settriggerorder來設定觸發器的執行順序
例:設定insert觸發器ti_Detail為第一個執行的觸發器
sp_settriggerorder 'ti_Detail','first','insert'
3,刪除資料庫中所有觸發器示例
declare @sql varchar(1000)
declare @triggername varchar(100)
declare result_cur cursor local for
select name from sys.triggers
open result_cur
fetch next from result_cur into @triggername
while @@fetch_status=0
begin
set @sql='drop trigger '+@triggername
exec(@sql)
fetch next from result_cur into @triggername
end
close result_cur
deallocate result_cur