Postgresql

是否可以在同一個 INSERT 中引用插入的列?

  • May 15, 2022

此查詢給出錯誤:

create table qwe (a bigint, completed bit varying(100000));
CREATE TABLE

insert into qwe (a, completed) values (1000, repeat('0', a));
ERROR:  column "a" does not exist

您可能還看到了提示:

提示:表“qwe”中有一個名為“a”的列,但不能從這部分查詢中引用它。

您不能引用尚不存在的列值。

相反,請再次拼出該值。或者使用子選擇或 CTEa只提供一次:

INSERT INTO qwe (a, completed)
VALUES (1000, repeat('0', 1000)::varbit);

INSERT INTO qwe (a, completed)
SELECT a, repeat('0', a)::varbit
FROM  (SELECT 1000) sub(a);

db<>在這裡擺弄

此外,您需要顯式轉換為varbit.

引用自:https://dba.stackexchange.com/questions/312138