мне вот потребовалось при изменении таблицы рекуррентно удалять (а после изменения - воссоздавать) зависящие от нее объекты (вьюшки, процедуры, триггеры). соорудил запрос к RDB$DEPENDENCIES
SELECT DISTINCT D.RDB$DEPENDENT_NAME D_NAME, D.RDB$DEPENDENT_TYPE D_TYPE
FROM RDB$DEPENDENCIES D
WHERE (D.RDB$DEPENDENT_TYPE IN (1,2,5))
AND (D.RDB$DEPENDED_ON_NAME = 'FObjectName')
|
и столкнулся с тем, что такой запрос не отбирает триггеры, созданные на вьюшки, собственно, IBExpert использует схожий запрос и оттого в его тулзе DependenciesViewer тот самый злополучный, созданный исключительно для тестирования технологии, триггер на вьюшку тоже не отображается
пока решил в случае вьюшек модифицировать запрос:
SELECT DISTINCT D.RDB$DEPENDENT_NAME D_NAME, CAST(D.RDB$DEPENDENT_TYPE AS INTEGER) D_TYPE
FROM RDB$DEPENDENCIES D
WHERE (D.RDB$DEPENDENT_TYPE IN (1,2,5))
AND (D.RDB$DEPENDED_ON_NAME = 'FObjectName')
UNION
SELECT T.RDB$TRIGGER_NAME D_NAME, CAST(2 AS INTEGER) AS D_TYPE
FROM RDB$TRIGGERS T
WHERE T.RDB$RELATION_NAME = 'FObjectName' |
интересно, это баг или фича? версия Firebird 1.5.2, версия IBExpert 2005.04.18.2
заранее извиняюсь, если баян!