### 26.4.29 信息\_SCHEMA INNODB\_虚拟表

[](<>)

这[`INNODB_VIRTUAL`](information-schema-innodb-virtual-table.html)表提供有关的元数据`InnoDB` [虚拟生成列](glossary.html#glos_virtual_generated_column)以及虚拟生成列所基于的列。

一行出现在[`INNODB_VIRTUAL`](information-schema-innodb-virtual-table.html)虚拟生成列所基于的每一列的表。

这[`INNODB_VIRTUAL`](information-schema-innodb-virtual-table.html)表有这些列：

-   `TABLE_ID`

    表示与虚拟列关联的表的标识符；相同的值`INNODB_TABLES.TABLE_ID`.

-   `POS`

    的位置值[虚拟生成列](glossary.html#glos_virtual_generated_column).该值很大，因为它对列序列号和序号位置进行了编码。用于计算该值的公式使用按位运算：

    ```
    ((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开始计算。

-   `基本位置`

    虚拟生成的列所基于的列的顺序位置。

#### 实例

```
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 |
+----------+-------+----------+
```

#### 笔记

-   如果将常量值指定给[虚拟生成列](glossary.html#glos_virtual_generated_column)，如下表所示，列的条目不会出现在`INNODB_虚拟`桌子要显示条目，虚拟生成的列必须具有基列。

    ```
    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_列`](information-schema-innodb-columns-table.html)桌子

-   你一定有[`过程`](privileges-provided.html#priv_process)查询此表的权限。

-   使用`信息模式` [`柱`](information-schema-columns-table.html)桌子还是桌子[`显示列`](show-columns.html)语句以查看有关此表的列的其他信息，包括数据类型和默认值。
