web-dev-qa-db-fra.com

Comment trouver tous les déclencheurs associés à une table avec SQL Server?

J'ai créé un déclencheur pour une table dans SQL Server et cela fonctionne pour moi.

Mon problème est: comment le trouver et le modifier?

J'utilise cette requête pour trouver mes déclencheurs:

select * from sys.triggers

Cette recherche tous les déclencheurs, mais comment l'ouvrir et changer les déclencheurs?

36
ar.gorgin

Vous pouvez le faire simplement avec SSMS. Allez simplement dans le nom de votre table et développez le nœud Déclencheurs pour afficher une liste des déclencheurs associés à cette table. Faites un clic droit pour modifier votre déclencheur .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%'

De cette façon, vous pouvez lister tous les déclencheurs associés à la table donnée.

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

Ici, copiez simplement la définition et modifiez le déclencheur.

Sinon, vous pouvez simplement accéder à SSMS et étendre votre base de données. Sous Programmabilité, développez Déclencheurs de base de données, cliquez avec le bouton droit sur le déclencheur spécifique, puis cliquez sur Modifier.

6
AnandPhadke

Cela pourrait être 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');

De cette façon, il vous suffit de brancher le nom des tables et la requête récupérera tous les déclencheurs dont vous avez besoin.

6
Saurabh

utilisez sp_helptrigger pour trouver la liste de déclencheurs des tables associées

5
Padhu

trouver des déclencheurs sur la table:

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

et vous pouvez trouver la procédure de magasin qui a la référence de la table:

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

Traverser 

Nécessité de répertorier tous les déclencheurs de la base de données SQL Server avec le nom et le schéma de la table

Cette URL contient un ensemble de requêtes permettant d’obtenir la liste des déclencheurs associés à une table donnée.

Je crois que vous travaillez dans sqlserver en suivant les étapes pour obtenir des déclencheurs de modification 

Pour modifier un déclencheur

  1. Développez un groupe de serveurs, puis développez un serveur.

  2. Développez Bases de données, développez la base de données à laquelle appartient la table contenant le déclencheur .__, puis cliquez sur Tables.

  3. Dans le volet d'informations, cliquez avec le bouton droit sur la table dans laquelle se trouve le déclencheur , Pointez sur Toutes les tâches, puis cliquez sur Gérer les déclencheurs.

  4. Dans Nom, sélectionnez le nom du déclencheur.

  5. Modifiez le texte du déclencheur dans le champ Texte si nécessaire. Appuyez sur CTRL + TAB pour mettre en retrait le texte d'un déclencheur. SQL Server Enterprise Manager.

  6. Pour vérifier la syntaxe du déclencheur, cliquez sur Vérifier la syntaxe.

2
Manish Prajapati

Avec cette requête, vous pouvez trouver tous les déclencheurs dans toutes les tables et toutes les vues.

    ;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
Ardalan Shahgholi
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'

Cela vous donnera tous les déclencheurs sur un Specified Table

0
ℛⱥℐℰşℎ

sélectionnez * parmi information_schema.TRIGGERS;

0
Mrinal

Beaucoup de requête simple ci-dessous

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