MySQL 5.7之后增加了对generated column的支持,能够在此列中指定一些预先定义的表达式(predefined expression)或者是结合其他列使用一些函数计算出相应的结果做给该列的值
语法
column_name data_type [GENERATED ALWAYS] AS (expression) [VIRTUAL | STORED] [UNIQUE [KEY]]
generated column有两种类型,分别是virtual(默认值),stored,前者并不会将值存储到磁盘,后者会,在性能上前者更优。 创建generated column后在,insert,update,drop关联的column的时候将有可能报错。
举例
DROP TABLE IF EXISTS contacts; CREATE TABLE contacts ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(50) NOT NULL, last_name VARCHAR(50) NOT NULL, fullname varchar(101) GENERATED ALWAYS AS (CONCAT(first_name,' ',last_name)), email VARCHAR(100) NOT NULL ); INSERT INTO contacts(first_name,last_name, email) VALUES('john','doe','john.doe@mysqltutorial.org'); SELECT * FROM contacts;推荐博文
How To Use The MySQL Generated Columns MySQL 5.7新特性之Generated Column(函数索引)