2008-11-25 14 views

Respuesta

9

También descubrí que

sp_depends <object_name> 

le mostrará una gran cantidad de información sobre una tabla, incluyendo todos los disparadores asociados a ella. Usar eso, junto con la consulta de Ray puede hacer que sea mucho más fácil encontrar los factores desencadenantes. En combinación con esta consulta del artículo enlazado de Ray:

sp_helptext <trigger_name> 

y se puede ver la definición del gatillo:

sp_depends <trigger_name> 

también le mostrará todas las tablas relacionadas con un disparador

10
select * 
from sysobjects 
where type = 'TR'

Tomado de here.

+0

Gracias Ray, busqué a lo largo del tiempo ayer pero nunca encontré ese artículo. Tiene una gran cantidad de información útil allí. –

+0

Acababa de agregar mi aclaración de respuesta a la suya, pero no puedo editar una respuesta. Creo que porque no he revisado el wiki de la comunidad cuando creé la pregunta. –

1

creo que hay es (o al menos 'fue') un problema donde la información de dependencia no siempre es precisa. Por lo tanto, trataría de abordarlo de esta manera:

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

Buena suerte.

PD: Este es un código no probado, deje un comentario si no funciona, y lo arreglaré.

5

para mostrar disparadores y crear SQL para una tabla:

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. abierto Sybase Central y vaya a ver los factores desencadenantes.
  2. Haga clic en la columna "Nombre del objeto" para ordenar.

La columna "Nombre del objeto" aparentemente muestra la tabla asociada con el desencadenador. Desplácese hasta la tabla que le interese.

0

Usaría el siguiente código para asegurarse de que está obteniendo los objetos adecuados. Desde Sybase 16 esto ya no estará completo, ya que podría haber más factores desencadenantes del mismo tipo en una tabla.

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' 
Cuestiones relacionadas