PostgreSQL – 生成列
生成的列是在其他列的帮助下计算的特殊列。每当更改连续发生并且不能被覆盖时,生成的列就会更新。在 Generated Columns 中计算的结果是参考表格的另一列。生成列只能使用不可变函数,不能使用子查询。
生成的列可以是存储或虚拟两种类型。存储生成的列在像基本命令(INSERT 或 UPDATED)中一样编写时评估,它占用存储并且类似于物化视图(除了总是自动更新)。读取时评估的虚拟生成列,它不占用存储空间,类似于视图。
但是目前,PostgreSQL 只实现了存储生成的列。
使用生成的列创建表的 PostgreSQL 语法如下:
CREATE TABLE table_name (
column_name_1 datatype(length) column constrain (if any),
column_name_2 datatype(length) column constrain (if any) ,
.
.
.
.
column_name datatype GENERATED ALWAYS AS (expression) STORED
);
关键字 STORED 必须指定为哪种类型的列。
示例:生成列的计算表达式:
CREATE TABLE Addition (
number_1 int,
number_2 int,
number_3 int,
add int GENERATED ALWAYS AS (number_1 + number_2 + number_3) STORED
)
INSERT INTO Addition(number_1, number_2, number_3) VALUES (1,2,3) , (8,-9,2) , (7,1 ,NULL);
TABLE Addition;
输出: