24.4.26 Таблица INFORMATION_SCHEMA INNODB_SYS_VIRTUAL
Таблица INNODB_SYS_VIRTUAL предоставляет метаданные о InnoDB и столбцах, на основе которых построены виртуальные генерируемые столбцы, эквивалентные информации в таблице SYS_VIRTUAL в словаре данных InnoDB.
Строка появляется в таблице INNODB_SYS_VIRTUAL для каждого столбца, на основе которого построен виртуальный генерируемый столбец.
Таблица INNODB_SYS_VIRTUAL содержит следующие столбцы:
-
TABLE_IDИдентификатор, представляющий таблицу, связанную с виртуальным столбцом; то же значение, что и
INNODB_SYS_TABLES.TABLE_ID. -
POSЗначение позиции. Значение велико, потому что оно кодирует номер последовательности столбца и порядковый номер. Используемая для расчета формула использует побитовую операцию:
((
nth virtual generated column for the InnoDB instance + 1) << 16) + the ordinal position of the virtual generated columnНапример, если первый виртуальный генерируемый столбец в
InnoDBэкземпляре является третьим столбцом таблицы, формула выглядит как(0 + 1) << 16) + 2. Первый виртуальный генерируемый столбец вInnoDBэкземпляре всегда имеет номер 0. Поскольку он является третьим столбцом в таблице, порядковый номер виртуального генерируемого столбца равен 2. Порядковые номера считаются с 0. -
BASE_POSПорядковый номер столбцов, на основе которых построен виртуальный генерируемый столбец.
Пример
mysql> CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`b` int(11) DEFAULT NULL,
`c` int(11) GENERATED ALWAYS AS (a+b) VIRTUAL,
`h` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_VIRTUAL
WHERE TABLE_ID IN
(SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES
WHERE NAME LIKE "test/t1");
+----------+-------+----------+
| TABLE_ID | POS | BASE_POS |
+----------+-------+----------+
| 95 | 65538 | 0 |
| 95 | 65538 | 1 |
+----------+-------+----------+
Примечания
-
Если константе присвоено значение , как в следующей таблице, запись для столбца не появляется в таблице
INNODB_SYS_VIRTUAL. Для того, чтобы запись появилась, виртуальный генерируемый столбец должен иметь базовый столбец.CREATE TABLE `t1` ( `a` int(11) DEFAULT NULL, `b` int(11) DEFAULT NULL, `c` int(11) GENERATED ALWAYS AS (5) VIRTUAL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Однако метаданные такого столбца появляются в таблице
INNODB_SYS_COLUMNS. Для запроса этой таблицы необходимо иметь привилегию
PROCESS.Для просмотра дополнительной информации о столбцах этой таблицы, включая типы данных и значения по умолчанию, используйте таблицу
INFORMATION_SCHEMACOLUMNSили операторSHOW COLUMNS.
© 2025 Oracle
Licensed under the GPLv2 License.