Страница 12 из 14
Зависимости Представьте себе такую картину: Вы создали таблицу, у нее есть какие-то поля. Потом Вы создали представление, которое выбирает из этой таблицы некоторые поля. И вот у Вас возникла необходимость удалить таблицу или некоторые ее поля. Что будет с представлением. Скорее оно работать не будет. Чтобы подобных ситуаций не происходило, InterBase-сервер отслеживает зависимости между объектами в базе данных и хранит их в служебной таблице RDB$DEPENDENCIES. Описание полей этой таблицы можно найти в документации, а тут я попробую привести примеры запросов, которые позволят посмотреть, какой объект от какого зависит. select distinct a.RDB$DEPENDENT_NAME, a.RDB$DEPENDENT_TYPE, b.RDB$TYPE_NAME from RDB$DEPENDENCIES a, RDB$TYPES b where (a.RDB$DEPENDENT_TYPE=b.RDB$TYPE) and (b.RDB$FIELD_NAME="RDB$OBJECT_TYPE") and (a.RDB$DEPENDED_ON_NAME = "JOB");
Приведенный выше запрос показывает, какие объекты зависят от объекта JOB. a.RDB$DEPENDENT_NAME - наименование объекта, который зависит от JOB, a.RDB$DEPENDENT_TYPE - тип этого объекта (код), b.RDB$TYPE_NAME - расшифровка типа объекта (представление, процедура и пр.). А приведенный ниже запрос показывает, от каких объектов зависит объект "PHONE_LIST". select a.RDB$DEPENDED_ON_NAME, a.RDB$FIELD_NAME, a.RDB$DEPENDED_ON_TYPE, b.RDB$TYPE_NAME from RDB$DEPENDENCIES a, RDB$TYPES b where (a.RDB$DEPENDED_ON_TYPE=b.RDB$TYPE) and (b.RDB$FIELD_NAME="RDB$OBJECT_TYPE") and a.RDB$DEPENDENT_NAME="PHONE_LIST";
a.RDB$DEPENDED_ON_NAME - наименование объекта, который используется при работе PHONE_LIST. a.RDB$FIELD_NAME - имена полей вышеупомянутых объектов, которые используются объектом PHONE_LIST. Далее, как и в предыдущем запросе, возвращается тип объекта, содержащегося в a.RDB$DEPENDED_ON_NAME. |