Заметки о системных таблицах InterBase


Псевдонимы типов.


Псевдонимы типов (Domains) определяют характеристики полей в таблицах базы данных, т.е. тип поля, значение по умолчанию и пр. Практически вся информация о псевдонимах содержится в таблице rdb$fields. Приведу несколько примеров SQL запросов, для получения этой информации.

select rdb$field_name from rdb$fields where rdb$system_flag = 0 order by rdb$field_name asc;

Этот SQL запрос выбирает все псевдонимы типов, которые были созданы для пользовательских таблиц (where rdb$system_flag = 0). Если Вы напишите условие следующим образом: where rdb$system_flag = 1, то получите список псевдонимов, на базе которых построены системные таблицы базы данных. Надо сказать, что имена системных псевдонимов типов хорошо продуманы и несут в себе смысловую нагрузку.

select * from rdb$fields where rdb$field_name = "BUDGET";

Этот SQL запрос выдает полную информацию о псевдониме с именем BUDGET. Я думаю, что следует дать некоторые комментарии по поводу результата запроса.

Поле RDB$COMPUTED_SOURCE содержит выражение, по которому считается значение вычисляемого столбца, определенного на основе этого псевдонима.

RDB$DEFAULT_SOURCE - тут все ясно из названия. Это поле определяет, какое значение будет подставляться в столбец таблицы, если ничего не введено.

RDB$FIELD_LENGTH, RDB$FIELD_SCALE - это соответственно длина столбца и масштаб для числовых типов данных.

RDB$FIELD_TYPE - поле, содержащее тип данных столбца, построенного на основе данного псевдонима. Эта информация представлена в виде короткого целого, т.е. числа. Расшифровка значений этих чисел приведена в документации по InterBase, но я продублирую ее и здесь.

SMALLINT 7 INTEGER 8
QUAD 9 FLOAT 10
D_FLOAT 11 CHAR 14
DOUBLE 27 DATE 35
VARCHAR 37 BLOB 261

Есть еще несколько интересных полей. RDB$FIELD_SUB_TYP определяет типы BLOB полей. Значения в этом поле тоже представлены в виде короткого целого. Расшифровку можно посмотреть в документации к InterBase.

RDB$NULL_FLAG определяет, может ли столбец таблицы содержать NULL значение. Если в этом поле стоит 1, то NULL значение в столбце, определенном на этом псевдониме, содержаться не может.

RDB$NULL_FLAG определяет, может ли столбец таблицы содержать NULL значение. Если в этом поле стоит 1, то NULL значение в столбце, определенном на этом псевдониме, содержаться не может.

|

 




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