Я использую SQL Advantage и должен знать, что SQL должен определить триггеры, связанные с таблицей. У меня нет возможности использовать другой инструмент, поэтому хороший старомодный SQL-решение - идеальный ответ.Как определить триггеры, связанные с таблицей в базе данных sybase?
ответ
Я также узнал, что
sp_depends <object_name>
покажет вам много информации о таблице, включая все триггеры, связанные с ним. Используя это, наряду с запросом Рэя можно намного легче найти триггеры. В сочетании с этим запросом из связанных статей Рьих:
sp_helptext <trigger_name>
, и вы можете увидеть определение триггера:
sp_depends <trigger_name>
также покажет вам все таблицы, связанные с триггером
select * from sysobjects where type = 'TR'
Взятый с here.
Я считаю, (или, по крайней мере, «была»), проблема, когда информация о зависимостях не всегда точна. Поэтому я бы постарался приблизиться к нему следующим образом:
select name
from sysobjects
where xtype='TR'
and id in (select id from syscomments where text like '%MY-TABLE-NAME%')
Удачи.
PS -Это непроверенный код, оставьте комментарий, если он не работает, и я исправлю его.
показать спусковые и создать SQL для таблицы:
select so.name, text
from sysobjects so, syscomments sc
where type = 'TR'
and so.id = sc.id
and text like '%TABLENAME%'
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
- Открыть Sybase Central и перейдите к спусковому просмотру.
- Щелкните по столбцу «Имя объекта», чтобы отсортировать его.
В столбце «Имя объекта», по-видимому, показана таблица, связанная с триггером. Прокрутите вниз до интересующей вас таблицы.
Я бы использовал следующий код, чтобы убедиться, что вы получаете нужные объекты. Поскольку 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'
Спасибо Рей, я искал вовремя вчера, но так и не нашел эту статью. В нем есть щедрость полезной информации. – 2008-11-26 18:06:34