28.4.29 Таблица INFORMATION_SCHEMA INNODB_VIRTUAL
Таблица INNODB_VIRTUAL предоставляет метаданные о столбцах, на основе которых создаются виртуальные вычисляемые столбцы.
В таблице 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.