[英]INSERT INTO ... RETURNING multiple columns (PostgreSQL)
我四處尋找答案,這似乎是確定的,但我想我會仔細檢查 Stack Overflow 社區:
這是我正在嘗試做的事情:
INSERT INTO my_table VALUES (a, b, c)
RETURNING (SELECT x, y, z FROM x_table, y_table, z_table
WHERE xid = a AND yid = b AND zid = c)
我收到一條錯誤消息,告訴我不能返回超過一列。
如果我告訴它SELECT x FROM x_table WHERE xid = a
,它會起作用。
與創建單獨的SELECT
查詢相比,這完全可以在單個查詢中實現嗎?
我正在使用 PostgreSQL 8.3。
試試這個。
with aaa as (
INSERT INTO my_table VALUES(a, b, c)
RETURNING a, b, c)
SELECT x, y, z FROM x_table, y_table, z_table
WHERE xid = (select a from aaa)
AND yid = (select b from aaa)
AND zid = (select c from aaa);
在9.3類似的查詢工作。
@corvinusz對於8.3的回答是錯誤的,但給了我一個好主意,非常感謝!
INSERT INTO my_table VALUES (a, b, c)
RETURNING (SELECT x FROM x_table WHERE xid = a),
(SELECT y FROM y_table WHERE yid = b),
(SELECT z FROM z_table WHERE zid = c)
我不知道為什么在問題中陳述的方式是無效的,但至少這是有效的。
我發現了這種方法(在一個函數中!)
DO $$
DECLARE
returner_ID int;
returner_Name text;
returner_Age int;
BEGIN
INSERT INTO schema.table
("ID", "Name", "Age")
VALUES
('1', 'Steven Grant', '30')
RETURNING
"ID",
"Name",
"Age"
INTO
returner_ID,
returner_Name,
returner_Ag
END; $$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.