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?
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
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.
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.
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
utilizzare sp_helptrigger per trovare l'elenco di trigger per le tabelle associate
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%'
Vai oltre
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
Espandere un gruppo di server e quindi espandere un server.
Espandere Database, espandere il database in cui appartiene la tabella contenente Il trigger, quindi fare clic su Tabelle.
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.
In Nome, selezionare il nome del trigger.
Cambia il testo del trigger nel campo Testo come necessario. Premere CTRL + TAB per rientrare il testo di un trigger SQL Server Enterprise Manager.
Per verificare la sintassi del trigger, fare clic su Verifica sintassi.
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
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
seleziona * da information_schema.TRIGGERS;
Domanda molto semplice qui sotto
select (select [name] from sys.tables where [object_id] = tr.parent_id ) as TableName ,* from sys.triggers tr