$$$ATTRI
Назначение
Системная таблица $$$ATTRI предназначена для хранения информации:
-
о столбцах таблиц БД и их атрибутах;
-
о простых и составных индексах (как именованных, так и неименованных).
Максимальное количество записей в таблице равно 1024 К (1048576 записей).
Схема таблицы
Схема записи о столбцах и их атрибутах
Схема таблицы $$$ATTRI для записей о столбцах и их атрибутах приведена
в таблице 1.
| Имя столбца | Тип данных | Содержание |
|---|---|---|
| $$$S21 | integer | Системный идентификатор таблицы. |
| $$$S22 | smallint |
Порядковый номер столбца таблицы. Если столбец имеет положительное значение, то запись содержит информацию о столбцах таблиц БД и их атрибутах, если отрицательное – то о простых и составных индексах. |
| $$$S23 | char(66) | Имя столбца. |
| $$$S24 | byte(80) | Описание атрибутов столбца (таблица 2). |
Структура записи о столбцах и их атрибутах
Структура записи ATTRI о столбцах и их атрибутах приведена
в таблице 2.
| Поле | Тип данных | Смещение | Содержание |
|---|---|---|---|
| PRZNUL | L_BYTE | 0 |
Флаг допустимости NULL-значения:
ПримечаниеЭто поле и все остальные нижеследующие поля таблицы соответствуют столбцу $$$S24. |
| TYPATR | L_BYTE | 1 |
Тип данных столбца:
|
| Prec | L_BYTE | 2 |
Точность для столбцов типа decimal/numeric. Для геометрических типов содержит идентификатор геометрического типа:
|
| Scale | L_BYTE | 3 | Масштаб для столбцов типа decimal/numeric. |
| DLN | L_WORD | 4 | Длина столбца в байтах. |
| Primary_Key | L_BYTE | 6 | Не используется. |
| Unique | L_BYTE | 7 | Не используется. |
| KEY | L_BYTE | 8 |
Признак индексирования:
|
| NMRAS | L_BYTE | 9 | Номер файла области индексов для индекса по столбцу. |
| Default_Null | L_BYTE | 10 | Не используется. |
| Foreign | L_BYTE | 11 |
Признак ссылающегося столбца:
|
| SDVINKOR | L_WORD | 12 | Номер байта, с которого начинается значение атрибута в неупакованной записи. Подсчет начинается с 0. |
| Delete_Action | L_BYTE | 14 |
Наличие операции удаления по ссылочной целостности:
|
| Update_Action | L_BYTE | 15 |
Наличие операции обновления по ссылочной целостности:
|
| PrimaryOrder | L_BYTE | 16 | Порядковый номер столбца в составном первичном ключе. |
| AccessGroup | L_BYTE | 17 | Группа доступа. Определяется мандатным доступом.1) |
| AccessLevels | L_BYTE | 18 | Уровни доступа. Старшие 4 бита – RAL, младшие 4 бита – WAL. Определяется мандатным доступом.1) |
| CKEYCOUNT | L_BYTE | 19 | Количество составных ключей, в которых задействован данный столбец. |
| DEFLEN | L_WORD | 20 | Длина значения по умолчанию (для столбца со строковым типом данных или для столбца типа extfile). |
| CharSet | L_WORD | 22 | Идентификатор кодовой страницы, используемой для представления данных столбца. |
| PhIndex | L_BYTE | 24 | Признак принадлежности столбца к фразовому индексу. |
| Res[3] | L_BYTE | 25 | Зарезервировано. |
| RANGE_ID | L_LONG | 28 | Номер страницы файла данных ( |
| AUTOINC_BASE | L_LONG | 32 | Начальное значение для AUTOINCREMENT. |
| DEFAULT_ID | L_LONG | 36 | Смещение в странице Integrity родительской таблицы, по которому хранится значение по умолчанию. |
| CHECK_ID | L_LONG | 40 | Не используется. |
| DEF_FILTER | L_LONG | 44 | Идентификатор фильтра полнотекстового поиска по умолчанию. |
| FOR_TABLE_ID | L_LONG | 48 | Идентификатор внешней таблицы. |
| Foreign_Column_Id | L_LONG | 52 | Не используется. |
| REF_ACTIONS | L_LONG | 56 | Не используется. |
| CAS_FL | L_LONG | 60 |
Флаги столбца:
|
| NMRFPAG | L_LONG | 64 |
Номер первой страницы индекса верхнего уровня. |
| NMRLPAG | L_LONG | 68 |
Номер последней страницы индекса верхнего уровня. |
| CKEYROWID[2] | L_LONG | 72 |
RowId описателя составного ключа в таблице |
1) Применяется только в СУБД ЛИНТЕР БАСТИОН
Пример
Получить системные атрибуты столбца MODEL пользовательской таблицы SYSTEM.AUTO:
select rowid
from $$$attri
where $$$s23='MODEL'
and $$$s21=(select $$$s11
from $$$sysrl
where $$$s12=(select rowid
from $$$usr
where $$$s34='SYSTEM')
and $$$s13='AUTO');
| 852|
! Длина столбца
select getword ($$$s24,4)
from $$$attri
where rowid=852;
| 20|
! Признак индексированности столбца
select case when getbyte ($$$s24,8)=0 then 'Не индексирован' else 'Индексирован' end
from $$$attri
where rowid=852;
|Не индексирован|
! Кодировка столбца
select name
from $$$charset
where ident=(select getword($$$s24,22) from $$$attri where rowid=852);
|CP866 |
Схема записи об индексах таблиц БД
Схема таблицы $$$ATTRI для записей об индексах таблиц приведена
в таблице 3.
| Имя столбца | Тип данных | Содержание |
|---|---|---|
| $$$S21 | integer | Системный идентификатор таблицы. |
| $$$S22 | smallint | Порядковый номер индекса таблицы. |
| $$$S23 | char(66) | Имя индекса. |
| $$$S24 | byte(80) | Описание индекса (таблица 4). |
Структура записи об индексах таблиц БД
Структура записи ATTRI об индексах приведена в
таблице 4.
| Поле | Тип данных | Смещение | Содержание |
|---|---|---|---|
| NMRAS | L_BYTE | 0 |
Номер файла индексов, где хранится информация о данном индексе. Для одностолбцовых именованных индексов это значение равно 255. ПримечаниеЭто поле и все остальные нижеследующие поля таблицы соответствуют столбцу |
| Delete_Action | L_BYTE | 1 |
Наличие операции удаления по ссылочной целостности:
|
| Update_Action | L_BYTE | 2 |
Наличие операции обновления по ссылочной целостности:
|
| AccessGroup | L_BYTE | 3 |
Группа доступа. Определяется мандатным доступом.1) |
| AccessLevels | L_BYTE | 4 |
Уровни доступа. Старшие 4 бита – RAL, младшие 4 бита – WAL. Определяется мандатным доступом.1) |
| ATRCNT | L_BYTE | 5 |
Количество столбцов в индексе. |
| Columns [6] | TCKEYPART | 6 |
Описание столбцов составного индекса. Структура элемента массива TCKEYPART, соответствующая старой версии ключа приведена в таблице 5, новой – в таблице 6. Признак новизны ключа содержится в поле VerType структуры записи таблицы |
| DLNKEY | L_WORD | 54 |
Длина составного ключа. |
| FOR_TABLE_ID | L_LONG | 56 |
Идентификатор внешней таблицы. |
| Foreign_Column_Id | L_LONG | 60 |
Идентификатор внешнего ключа. |
| CAS_FL | L_LONG | 64 |
Флаги индекса:
|
| TreeTop | L_LONG | 68 |
Номер начальной страницы файла индексов, где хранится информация о данном индексе. |
| TreeLab | L_LONG | 72 |
Метка уровня дерева индексов. |
| geoType | L_BYTE | 76 |
Не используется. |
| Tail | L_BYTE | 77 |
Не используется. |
| VerType | L_WORD | 78 |
Версия ключа. Если установлен флаг 0x8000, то составной ключ имеет новую структуру (максимальный размер ключа 1024 байта). |
| idxCreationTime | DATE | 80 |
Зарезервировано. |
| Res | L_WORD | 86 |
Зарезервировано. |
1) Применяется только в СУБД ЛИНТЕР БАСТИОН
| Поле | Тип данных | Содержание |
|---|---|---|
| Nmratr | L_BYTE |
Порядковый номер данного столбца в составном индексе. |
| PartLen | L_BYTE |
Длина столбца. |
| PartShf | L_WORD |
Смещение столбца в записи таблицы. |
| CharSet | L_WORD |
Идентификатор кодовой страницы столбца. |
| PartTyp | L_BYTE |
Тип данных столбца (поле TYPATR в таблице 2). |
| Tail_byte | L_BYTE |
Не используется. |
| Поле | Тип данных | Содержание |
|---|---|---|
| Nmratr | L_BYTE |
Порядковый номер данного столбца в составном индексе. |
| PartTyp | L_BYTE |
Тип данных столбца (поле TYPATR в таблице 2). |
| PartLen | L_WORD |
Длина столбца. |
| PartShf | L_WORD |
Смещение столбца в записи таблицы. |
| CharSet | L_WORD |
Идентификатор кодовой страницы столбца. |