Можно ли искать все зависимости поля - PullRequest
0 голосов
/ 04 апреля 2019

Я ищу определенную строку в моей базе данных и хотел узнать, есть ли в ibexpert функция для поиска всех зависимостей поля.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Когда поле выбрано в таблице, нажмите на вкладку «Зависимости полей».

enter image description here

1 голос
/ 05 апреля 2019

Я не знаю IBExpert, но обычно в Firebird вы можете найти зависимости в системной таблице RDB$DEPENDENCIES.Он не скажет вам точно, в какой строке кода используется поле, но поможет вам определить, в каком объекте оно используется.Затем нужно проверить исходный код этого конкретного объекта, чтобы увидеть, где он используется.

Таблица RDB$DEPENDENCIES имеет следующие столбцы (в Firebird 2.5):

  • RDB$DEPENDENT_NAME - Имя «зависимого» (объекта, использующего зависимость), например, имя хранимой процедуры
  • RDB$DEPENDED_ON_NAME - Имя зависимости (например, имя таблицы)
  • RDB$FIELD_NAME - Имя поля зависимости (например, столбец таблицы);может быть NULL для неполевых зависимостей
  • RDB$DEPENDENT_TYPE - Тип зависимого (например, 0 = отношение (таблица или представление), см. RDB$TYPES с RDB$FIELD_NAME = 'RDB$OBJECT_TYPE для возможных значений)
  • RDB$DEPENDED_ON_TYPE - Тип зависимости (зависимости столбца имеют тип 0 и RDB$FIELD_NAME не ноль, зависимости таблицы / представления имеют тип 0 и RDB$FIELD_NAME ноль.

Например,Вы можете использовать следующий запрос:

select dep.*, tt.RDB$TYPE_NAME as DEPENDENT_OBJECT_TYPE, dt.RDB$TYPE_NAME as DEPENDED_ON_OBJECT_TYPE
from RDB$DEPENDENCIES dep
inner join RDB$TYPES tt
  on tt.RDB$TYPE = dep.RDB$DEPENDENT_TYPE 
    and tt.RDB$FIELD_NAME = 'RDB$OBJECT_TYPE'
inner join RDB$TYPES dt
  on dt.RDB$TYPE = dep.RDB$DEPENDED_ON_TYPE 
    and dt.RDB$FIELD_NAME = 'RDB$OBJECT_TYPE'
...