簡體   English   中英

將一個插入查詢的結果插入到另一個插入中

[英]Insert result from one insert query into another insert

我有兩個 psotgres 表。 表 1 將 userid 作為主鍵。 表2使用userid作為外鍵,我需要將數據插入表1和表2。我想在一個語句中完成所有操作如果插入表2失敗,我需要刪除插入表1的兩個。

INSERT into table1 (userid,email)Values(12,"example@gmail.com") RETURNING userid

INSERT into table2(userid,name,address)Values(12,"Joe","123 test Dr") 

我怎樣才能在一份聲明中做到這一點?

您只需要將第一個insert包裝在with子句中。 如果您事先知道所有值,您甚至不需要returning

with ins as (
    insert into table1 (userid, email)
    values(12,'example@gmail.com') 
)
insert into table2 (userid, name, address)
values(12, 'Joe', '123 test Dr')

另一方面,如果userid是自動生成的值,那么您可以從 CTE 返回它,並在另一個插入中使用它,如下所示:

with ins as (
    insert into table1 (email)
    values('example@gmail.com') 
    returning userid
)
insert into table2 (userid, name, address)
select userid, 'joe', '123 test Dr'
from ins

旁注:對文字字符串使用單引號。 雙引號用於標識符(列名、表名等)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM