2008-11-25 3 views
8

Я использую SQL Advantage и должен знать, что SQL должен определить триггеры, связанные с таблицей. У меня нет возможности использовать другой инструмент, поэтому хороший старомодный SQL-решение - идеальный ответ.Как определить триггеры, связанные с таблицей в базе данных sybase?

ответ

9

Я также узнал, что

sp_depends <object_name> 

покажет вам много информации о таблице, включая все триггеры, связанные с ним. Используя это, наряду с запросом Рэя можно намного легче найти триггеры. В сочетании с этим запросом из связанных статей Рьих:

sp_helptext <trigger_name> 

, и вы можете увидеть определение триггера:

sp_depends <trigger_name> 

также покажет вам все таблицы, связанные с триггером

10
select * 
from sysobjects 
where type = 'TR'

Взятый с here.

+0

Спасибо Рей, я искал вовремя вчера, но так и не нашел эту статью. В нем есть щедрость полезной информации. – 2008-11-26 18:06:34

1

Я считаю, (или, по крайней мере, «была»), проблема, когда информация о зависимостях не всегда точна. Поэтому я бы постарался приблизиться к нему следующим образом:

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

Удачи.

PS -Это непроверенный код, оставьте комментарий, если он не работает, и я исправлю его.

5

показать спусковые и создать SQL для таблицы:

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. Открыть Sybase Central и перейдите к спусковому просмотру.
  2. Щелкните по столбцу «Имя объекта», чтобы отсортировать его.

В столбце «Имя объекта», по-видимому, показана таблица, связанная с триггером. Прокрутите вниз до интересующей вас таблицы.

0

Я бы использовал следующий код, чтобы убедиться, что вы получаете нужные объекты. Поскольку Sybase 16 это больше не будет полным, так как на одной таблице может быть больше триггеров одного типа.

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' 

 Смежные вопросы

  • Нет связанных вопросов^_^