文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  INFORMATION_SCHEMA INNODB_VIRTUAL 表格

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) + 2InnoDB 實例中的第一個虛擬產生欄始終為數字 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_SCHEMA COLUMNS 表格或 SHOW COLUMNS 陳述式,以檢視有關此表格欄的其他資訊,包括資料類型和預設值。