Я ищу определенную строку в своей базе данных и хотел узнать, есть ли в ibexpert функция для поиска всех зависимостей поля.
Я ищу строку кода, которая взаимодействует с этим полем, потому что до сих пор не мог найти свою проблему. Это поле изменено в процедуре, представлении/триггере или где-то еще, но я не могу найти, где именно. Я пытался использовать вкладку «Зависимости», но это мне мало помогает,
This field is changed in a procedure, view / trigger почему вы так думаете? это может быть за пределами Firebird. Как сумасшедший UDF, возвращающий соединение с БД и изменяющий данные. Или блок PSQL может составить любую программу, которая ему нравится, а затем передать EXECUTE STATEMENT. Или какой-то ДРУГОЙ сервер firebird может установить удаленное соединение. Что ж, моя личная идея заключается в том, чтобы использовать IBExpert для «извлечения метаданных», а затем сбрасывать всю вашу базу данных (за исключением строк данных в вашем случае) в длинный текстовый файл, сценарий SQL. Затем вы загружаете этот текстовый файл в Notepad ++ или что-то еще и выполняете поиск имени поля.
вы также можете добавить CHECK-условие или TRIGGER в эту таблицу, если вы можете сформулировать, что особенного в изменении, которое вы хотите, по сравнению со всеми другими изменениями. Затем заставьте эту проверку/триггер генерировать некоторую ошибку (исключение, деление на ноль, что угодно), а затем посмотрите, где именно ваше приложение будет разорвано.
Ibexpert имеет «Поиск в метаданных SHIT_ALT+F», который может искать введенный текст. На левой панели вы увидите объекты, а на правой вы можете просмотреть источник объекта при выборе.
@EdMendez спасибо, это помогло мне.





Я не знаю 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'
Спасибо за это, попробуем это в ближайшее время. Моя проблема была решена с советом @Ed Mendez. Там я мог найти все таблицы/представления/триггеры, в которых я искал свое поле.
Что вы имеете в виду под "конкретной строкой"? И что именно вы хотите найти?