MySQL GENERATED COLUMNS 有哪些不同的类型?
我们有两种 MySQL 生成的列,如下所示 —
阅读更多:MySQL 教程
VIRTUAL GENERATED COLUMN
顾名思义,这种生成的列不会占用任何磁盘空间。可以使用或不使用关键字“virtual”生成。为了理解,我们在以下示例中进行说明 —
示例
mysql> Create table triangle(SideA DOUBLE, SideB DOUBLE, SideC DOUBLE AS (SQRT(SideA * SideB + SideB * SideB)));
Query OK, 0 rows affected (0.44 sec)
mysql> Describe Triangle;
+-------+--------+------+-----+---------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------------------+
| SideA | double | YES | | NULL | |
| SideB | double | YES | | NULL | |
| SideC | double | YES | | NULL | VIRTUAL GENERATED |
+-------+--------+------+-----+---------+-------------------+
3 rows in set (0.00 sec)
以上说明显示了列 SideC 是一个虚拟生成的列。
STORED GENERATED COLUMN
如名称所示,这种生成的列将占用磁盘空间。可以使用关键字“stored”生成。为了理解,我们在以下示例中进行说明 —
示例
mysql> Create table triangle_stored(SideA DOUBLE, SideB DOUBLE, SideC DOUBLE AS (SQRT(SideA * SideB + SideB * SideB)) STORED);
Query OK, 0 rows affected (0.47 sec)
mysql> Describe triangle_stored;
+-------+--------+------+-----+---------+------------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+------------------+
| SideA | double | YES | | NULL | |
| SideB | double | YES | | NULL | |
| SideC | double | YES | | NULL | STORED GENERATED |
+-------+--------+------+-----+---------+------------------+
3 rows in set (0.00 sec)
以上说明显示了列 SideC 是一个存储生成的列。