1、說明 生成列是由已存在的欄位通過表達式計算得來的 2、生成列類型 VIRTUAL,即 類型,欄位值不實際存儲,當讀取行時再計算,虛擬列類型不占存儲 STORED,即 類型,欄位值會實際存儲起來,當插入或更新時,欄位值會計算出來並存儲起來 3、用法 如: 再如: 詳見 https://dev.my ...
1、說明
生成列是由已存在的欄位通過表達式計算得來的
2、生成列類型
VIRTUAL,即虛擬
類型,欄位值不實際存儲,當讀取行時再計算,虛擬列類型不占存儲
STORED,即存儲
類型,欄位值會實際存儲起來,當插入或更新時,欄位值會計算出來並存儲起來
3、用法
col_name data_type [GENERATED ALWAYS] AS (expr)
[VIRTUAL | STORED] [NOT NULL | NULL]
[UNIQUE [KEY]] [[PRIMARY] KEY]
[COMMENT 'string']
如:
CREATE TABLE person (
first_name VARCHAR(10) NOT NULL COMMENT '名',
last_name VARCHAR(10) NOT NULL COMMENT '姓',
full_name VARCHAR(21) GENERATED ALWAYS AS (CONCAT(first_name,' ',last_name)) STORED NOT NULL COMMENT '全名'
);
再如:
ALTER TABLE person ADD full_name_gc VARCHAR(21)
GENERATED ALWAYS AS (CONCAT(first_name,'_',last_name)) VIRTUAL NOT NULL COMMENT '全名(虛擬列)'
詳見 https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html