28.4.29 Таблица INFORMATION_SCHEMA INNODB_VIRTUAL
Таблица INNODB_VIRTUAL предоставляет метаданные о InnoDB и столбцах, на которых основаны виртуальные вычисляемые столбцы.
В таблице INNODB_VIRTUAL появляется строка для каждого столбца, на котором основан виртуальный вычисляемый столбец.
Таблица INNODB_VIRTUAL содержит следующие столбцы:
-
TABLE_IDИдентификатор, представляющий таблицу, связанную с виртуальным столбцом; совпадает со значением
INNODB_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 |
+----------+-------+----------+
| 98 | 65538 | 0 |
| 98 | 65538 | 1 |
+----------+-------+----------+
Примечания
-
Если константа присваивается виртуальному вычисляемому столбцу, как в таблице ниже, запись для столбца не появляется в таблице
INNODB_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_COLUMNS. Для запроса этой таблицы необходимо иметь привилегию
PROCESS.Используйте таблицу
INFORMATION_SCHEMACOLUMNSили операторSHOW COLUMNS, чтобы получить дополнительную информацию о столбцах этой таблицы, включая типы данных и значения по умолчанию.
© 2025 Oracle
Licensed under the GPLv2 License.