InterBase - статьи


Таблицы - часть 2


SELECT RDB$RELATIONS.RDB$RELATION_NAME, MAX( RDB$FORMATS.RDB$FORMAT ) MAX_OF_RDB$FORMAT FROM RDB$RELATIONS INNER JOIN RDB$FORMATS ON (RDB$RELATIONS.RDB$RELATION_ID = RDB$FORMATS.RDB$RELATION_ID) WHERE ((RDB$RELATIONS.RDB$SYSTEM_FLAG = 0) and (RDB$RELATIONS.RDB$VIEW_SOURCE IS NULL)) GROUP BY RDB$RELATIONS.RDB$RELATION_NAME ORDER BY RDB$RELATIONS.RDB$RELATION_NAME;

Все таблицы состоят из полей. Посмотрим, из каких полей состоит та или иная таблица. Информация о полях таблиц содержится в служебной таблице RDB$RELATION_FIELDS. Приведенный ниже запрос выдаст имя таблицы, имя поля, порядковый номер поля в таблице, имя домена (RDB$FIELD_SOURCE), на котором данное поле базируется, возможность ввести NULL (RDB$NULL_FLAG <> 1) и значение по умолчанию.

SELECT RDB$RELATIONS.RDB$RELATION_NAME, RDB$RELATION_FIELDS.RDB$FIELD_NAME, RDB$RELATION_FIELDS.RDB$FIELD_POSITION, RDB$RELATION_FIELDS.RDB$FIELD_SOURCE, RDB$RELATION_FIELDS.RDB$NULL_FLAG, RDB$RELATION_FIELDS.RDB$DEFAULT_SOURCE FROM RDB$RELATION_FIELDS INNER JOIN RDB$RELATIONS ON (RDB$RELATION_FIELDS.RDB$RELATION_NAME = RDB$RELATIONS.RDB$RELATION_NAME) WHERE ((RDB$RELATIONS.RDB$SYSTEM_FLAG = 0) and (RDB$RELATIONS.RDB$VIEW_SOURCE IS NULL)) ORDER BY RDB$RELATIONS.RDB$RELATION_NAME, RDB$RELATION_FIELDS.RDB$FIELD_POSITION;

Если включить в запрос информацию из таблицы RDB$FIELDS (описание доменов), то можно получить дополнительную информацию о каждом поле. Такой информацией может быть выражение для вычислимых полей и тип поля базы данных.

SELECT RDB$RELATIONS.RDB$RELATION_NAME, RDB$RELATION_FIELDS.RDB$FIELD_NAME, RDB$RELATION_FIELDS.RDB$FIELD_POSITION, RDB$RELATION_FIELDS.RDB$FIELD_SOURCE, RDB$RELATION_FIELDS.RDB$NULL_FLAG, RDB$RELATION_FIELDS.RDB$DEFAULT_SOURCE, RDB$FIELDS.RDB$COMPUTED_SOURCE, RDB$FIELDS.RDB$DEFAULT_SOURCE, RDB$FIELDS.RDB$FIELD_TYPE, RDB$FIELDS.RDB$NULL_FLAG FROM RDB$RELATIONS INNER JOIN RDB$RELATION_FIELDS ON (RDB$RELATIONS.RDB$RELATION_NAME = RDB$RELATION_FIELDS.RDB$RELATION_NAME) INNER JOIN RDB$FIELDS ON (RDB$RELATION_FIELDS.RDB$FIELD_SOURCE = RDB$FIELDS.RDB$FIELD_NAME) WHERE ((RDB$RELATIONS.RDB$SYSTEM_FLAG = 0) and (RDB$RELATIONS.RDB$VIEW_SOURCE IS NULL)) ORDER BY RDB$RELATIONS.RDB$RELATION_NAME, RDB$RELATION_FIELDS.RDB$FIELD_POSITION;




- Начало -  - Назад -  - Вперед -