2008-11-25 6 views

Répondre

9

J'ai aussi découvert que

sp_depends <object_name> 

vous montrera beaucoup d'informations sur une table, y compris tous les déclencheurs qui y sont associés. En utilisant cela, avec la requête de Ray peut rendre beaucoup plus facile de trouver les déclencheurs. Combiné avec cette requête de l'article lié Ray:

sp_helptext <trigger_name> 

et vous pouvez voir la définition du déclencheur:

sp_depends <trigger_name> 

vous montrera également toutes les tables liées à un déclencheur

10
select * 
from sysobjects 
where type = 'TR'

Tiré de here.

+0

Merci Ray, j'ai cherché hier le long du temps mais je n'ai jamais trouvé cet article. Il a une abondance d'informations utiles là-bas. –

+0

J'aurais juste ajouté ma réponse à la vôtre mais je ne peux pas éditer une réponse. Je pense que je n'ai pas vérifié le wiki de la communauté lorsque j'ai créé la question. –

1

Je crois qu'il ya est (ou du moins "était") un problème où les informations de dépendance ne sont pas toujours exactes. Par conséquent je voudrais essayer de l'approcher comme ceci:

select name 
from sysobjects 
where xtype='TR' 
and id in (select id from syscomments where text like '%MY-TABLE-NAME%') 

Bonne chance. PS-Ceci est le code non testé, laissez un commentaire si cela ne fonctionne pas, et je vais le réparer.

5

pour afficher les déclencheurs et créer sql pour une table:

select so.name, text 
from sysobjects so, syscomments sc 
where type = 'TR' 
and so.id = sc.id 
and text like '%TABLENAME%' 
3
SELECT 
    T.name AS TableName 
    ,O.name TriggerName 
    FROM sysobjects O 
    INNER JOIN sys.tables T ON T.object_id = O.parent_obj 
    WHERE O.type = 'TR' AND T.name IN ('tableNames') 
ORDER BY TableName 
0
  1. Ouvrez Sybase Central et accédez aux déclencheurs voir.
  2. Cliquez sur la colonne "Nom de l'objet" pour trier.

La colonne "Nom de l'objet" affiche apparemment la table associée au déclencheur. Faites défiler jusqu'à la table qui vous intéresse.

0

Je voudrais utiliser le code suivant, pour m'assurer que vous obtenez les bons objets. Depuis Sybase 16, cela ne sera plus complet, car il pourrait y avoir plus de déclencheurs du même type sur une table.

select tr.id, tr.name, tr.type, tr.crdate, tr.loginame 
from sysobjects u 
    join sysobjects tr on tr.id in (u.instrig, u.deltrig, u.updtrig, u.seltrig) 
where u.name = 'TABLENAME' 
Questions connexes