📜  PostgreSQL – 生成列

📅  最后修改于: 2022-05-13 01:57:06.262000             🧑  作者: Mango

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; 

输出: