risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come trovare tutti i trigger associati a una tabella con SQL Server?

Ho creato un trigger per una tabella in SQL Server e funziona per me.

Il mio problema è: come trovarlo e modificarlo?

Io uso questa query per trovare i miei trigger:

select * from sys.triggers

Questo trova tutti i trigger, ma come aprirlo e modificare i trigger?

36
ar.gorgin

Puoi farlo semplicemente con SSMS. Basta andare al nome della tabella ed espandere il nodo Trigger per visualizzare un elenco di trigger associati a tale tabella. Fare clic con il tasto destro per modificare il trigger enter image description here

43
Buzz
select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%YourTableName%'

In questo modo puoi elencare tutti i trigger associati alla tabella specificata.

30
Jigar Pandya
select m.definition from sys.all_sql_modules m inner join  sys.triggers t
on m.object_id = t.object_id 

Qui basta copiare la definizione e modificare il trigger.

Altrimenti puoi semplicemente accedere a SSMS ed espandere il tuo DB e in Programmabilità espandere Trigger database, quindi fare clic con il pulsante destro del mouse sul trigger specifico e fare clic su Modifica, inoltre è possibile modificare.

6
AnandPhadke

Questo potrebbe essere utile 

SELECT 
 t.name AS TableName,
 tr.name AS TriggerName  
FROM sys.triggers tr
INNER JOIN sys.tables t ON t.object_id = tr.parent_id
WHERE 
t.name in ('TABLE_NAME(S)_GOES_HERE');

In questo modo devi solo collegare il nome delle tabelle e la query recupererà tutti i trigger di cui hai bisogno

6
Saurabh

utilizzare sp_helptrigger per trovare l'elenco di trigger per le tabelle associate

5
Padhu

trova trigger sulla tabella:

select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%TableName%'

e puoi trovare la procedura del negozio che ha riferimento alla tabella:

SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%yourtablename%'
2
Rahul mishra

Vai oltre 

È necessario elencare tutti i trigger nel database di SQL Server con il nome della tabella e lo schema della tabella

Questo URL contiene una serie di query con cui è possibile ottenere l'elenco di trigger associati a una determinata tabella.

Credo che tu stia lavorando in sqlserver seguendo i passaggi per ottenere i trigger di modifica 

Per modificare un trigger

  1. Espandere un gruppo di server e quindi espandere un server.

  2. Espandere Database, espandere il database in cui appartiene la tabella contenente Il trigger, quindi fare clic su Tabelle.

  3. Nel riquadro dei dettagli, fare clic con il pulsante destro del mouse sulla tabella su cui è presente il trigger , Scegliere Tutte le attività e quindi fare clic su Gestisci trigger.

  4. In Nome, selezionare il nome del trigger.

  5. Cambia il testo del trigger nel campo Testo come necessario. Premere CTRL + TAB per rientrare il testo di un trigger SQL Server Enterprise Manager.

  6. Per verificare la sintassi del trigger, fare clic su Verifica sintassi.

2
Manish Prajapati

Con questa query è possibile trovare tutti i trigger in tutte le tabelle e tutte le visualizzazioni.

    ;WITH
        TableTrigger
        AS
        (
            Select 
                Object_Kind = 'Table',
                Sys.Tables.Name As TableOrView_Name , 
                Sys.Tables.Object_Id As Table_Object_Id ,
                Sys.Triggers.Name As Trigger_Name, 
                Sys.Triggers.Object_Id As Trigger_Object_Id 
            From Sys.Tables 
            INNER Join Sys.Triggers On ( Sys.Triggers.Parent_id = Sys.Tables.Object_Id )
            Where ( Sys.Tables.Is_MS_Shipped = 0 )
        ),
        ViewTrigger
        AS
        (
            Select 
                Object_Kind = 'View',
                Sys.Views.Name As TableOrView_Name , 
                Sys.Views.Object_Id As TableOrView_Object_Id ,
                Sys.Triggers.Name As Trigger_Name, 
                Sys.Triggers.Object_Id As Trigger_Object_Id 
            From Sys.Views 
            INNER Join Sys.Triggers On ( Sys.Triggers.Parent_id = Sys.Views.Object_Id )
            Where ( Sys.Views.Is_MS_Shipped = 0 )
        ),
        AllObject
        AS
        (
            SELECT * FROM TableTrigger

            Union ALL

            SELECT * FROM ViewTrigger
        )


    Select 
        * 
    From AllObject
    Order By Object_Kind, Table_Object_Id 
1
select t.name as TriggerName,m.definition,is_disabled 
from sys.all_sql_modules m 
inner join  
sys.triggers t
on m.object_id = t.object_id 
inner join sys.objects o
on o.object_id = t.parent_id
Where o.name = 'YourTableName'

Questo ti darà tutti i trigger su una tabella specificata

0

seleziona * da information_schema.TRIGGERS;

0
Mrinal

Domanda molto semplice qui sotto

select (select [name] from  sys.tables where [object_id] = tr.parent_id ) as TableName ,*  from sys.triggers tr
0
dilipkumar katre