Псевдонимы типов.
Псевдонимы типов (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 значение в столбце, определенном на этом псевдониме, содержаться не может.
|