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