Postgresql
如何將目前行傳遞給 Postgres 中的 Generated Column 函式?
Postgres 12+ 支持生成的列:https ://www.postgresql.org/docs/current/ddl-generated-columns.html
從文件來看,語法似乎是有限的——它強制人們顯式地命名生成列所依賴的列。
CREATE TABLE people ( ..., height_cm numeric, height_in numeric GENERATED ALWAYS AS (height_cm / 2.54) STORED );
有沒有辦法將整行傳遞給生成函式?就像是
CREATE TABLE people ( ..., height_cm numeric, height_in numeric GENERATED ALWAYS AS generator_function(current_row) STORED );
這似乎不可能。
如果它確實有效,它只能通過首先創建表,然後是函式,然後添加生成的列來工作。
但是,這樣做:
CREATE TABLE people ( id int, height_cm numeric ); create function generator_function(p_row people) returns numeric as $$ select p_row.height_cm / 2.54; $$ language sql immutable; alter table people add height_in numeric GENERATED ALWAYS AS (generator_function(people)) STORED;
結果是:
錯誤:不能在列生成表達式中使用整行變數
詳細資訊:這將導致生成的列依賴於它自己的值。
所以,這似乎是不可能的。