SQL sp_helptrigger2
SQL
Download (.zip)
USE master GO
CREATE procedure sp_helptrigger2 --- @tabname nvarchar(776), /* Table name */ @triggertype char(6) = NULL /* Trigger type */ as
/* ** Variation of supplied procedure sp_helptrigger ** Created By: ** Kalen Delaney ** 31 July 2000 ** ** Provides ordering information for AFTER TRIGGERS */
declare @objid int, /* id of the object */ @dbname sysname, @deltrig int, @instrig int, @updtrig int
-- Check to see that the object names are local to the current database. select @dbname = parsename(@tabname,3)
if @dbname is not null and @dbname <> db_name() begin raiserror(15250,-1,-1) return (1) end
select @objid = id from sysobjects where id = object_id(@tabname) and type in ('S','U', 'V')
if @objid is null begin select @dbname = db_name() raiserror(15009,-1,-1,@tabname,@dbname) return(1) end
/* Check that input type is UPDATE, INSERT, DELETE */ if @triggertype is not null and not UPPER(@triggertype ) in ('UPDATE', 'INSERT', 'DELETE') begin raiserror(15305,-1,-1) return(1) end
if @triggertype is NULL select trigger_name = name, trigger_owner = user_name(uid), IsUpdate = ObjectProperty( id, 'ExecIsUpdateTrigger'), UpdateOrd = CASE ObjectProperty( id, 'ExecIsUpdateTrigger') WHEN 0 THEN 'n/a' ELSE CASE ObjectProperty( id, 'ExecIsFirstUpdateTrigger') WHEN 1 THEN 'First' ELSE CASE ObjectProperty( id, 'ExecIsLastUpdateTrigger') WHEN 1 THEN 'Last' ELSE 'Unspecified' END END END, IsDelete = ObjectProperty( id, 'ExecIsDeleteTrigger'), DeleteOrd = CASE ObjectProperty( id, 'ExecIsDeleteTrigger') WHEN 0 THEN 'n/a' ELSE CASE ObjectProperty( id, 'ExecIsFirstDeleteTrigger') WHEN 1 THEN 'First' ELSE CASE ObjectProperty( id, 'ExecIsLastDeleteTrigger') WHEN 1 THEN 'Last' ELSE 'Unspecified' END END END, IsInsert = ObjectProperty( id, 'ExecIsInsertTrigger'), InsertOrd = CASE ObjectProperty( id, 'ExecIsInsertTrigger') WHEN 0 THEN 'n/a' ELSE CASE ObjectProperty( id, 'ExecIsFirstInsertTrigger') WHEN 1 THEN 'First' ELSE CASE ObjectProperty( id, 'ExecIsLastInsertTrigger') WHEN 1 THEN 'Last' ELSE 'Unspecified' END END END, IsAfter = ObjectProperty( id, 'ExecIsAfterTrigger'), IsInsteadof = ObjectProperty( id, 'ExecIsInsteadOfTrigger') from sysobjects where parent_obj = @objid and type = 'TR' else begin set @deltrig = case when upper(@triggertype ) = 'DELETE' then 0 else -1 end set @instrig = case when upper(@triggertype ) = 'INSERT' then 0 else -1 end set @updtrig = case when upper(@triggertype ) = 'UPDATE' then 0 else -1 end select trigger_name = name, trigger_owner = user_name(uid), IsUpdate = ObjectProperty( id, 'ExecIsUpdateTrigger'), UpdateOrd = CASE ObjectProperty( id, 'ExecIsUpdateTrigger') WHEN 0 THEN 'n/a' ELSE CASE ObjectProperty( id, 'ExecIsFirstUpdateTrigger') WHEN 1 THEN 'First' ELSE CASE ObjectProperty( id, 'ExecIsLastUpdateTrigger') WHEN 1 THEN 'Last' ELSE 'Unspecified' END END END, IsDelete = ObjectProperty( id, 'ExecIsDeleteTrigger'), DeleteOrd = CASE ObjectProperty( id, 'ExecIsDeleteTrigger') WHEN 0 THEN 'n/a' ELSE CASE ObjectProperty( id, 'ExecIsFirstDeleteTrigger') WHEN 1 THEN 'First' ELSE CASE ObjectProperty( id, 'ExecIsLastDeleteTrigger') WHEN 1 THEN 'Last' ELSE 'Unspecified' END END END, IsInsert = ObjectProperty( id, 'ExecIsInsertTrigger'), InsertOrd = CASE ObjectProperty( id, 'ExecIsInsertTrigger') WHEN 0 THEN 'n/a' ELSE CASE ObjectProperty( id, 'ExecIsFirstInsertTrigger') WHEN 1 THEN 'First' ELSE CASE ObjectProperty( id, 'ExecIsLastInsertTrigger') WHEN 1 THEN 'Last' ELSE 'Unspecified' END END END, IsAfter = ObjectProperty( id, 'ExecIsAfterTrigger'), IsInsteadof = ObjectProperty( id, 'ExecIsInsteadOfTrigger') from sysobjects where parent_obj = @objid and ObjectProperty( id, 'ExecIsDeleteTrigger') > @deltrig and ObjectProperty( id, 'ExecIsInsertTrigger') > @instrig and ObjectProperty( id, 'ExecIsUpdateTrigger') > @updtrig and type = 'TR' end return(0) --sp_helptrigger
|