簡體   English   中英

如何結合這兩個Postgresql查詢?

[英]How to combine these two Postgresql queries?

我想插入到第一個表中,然后在最終返回插入結果之前,使用返回的(由數據庫生成的)插入行的UUID更新第二個表。

插入查詢如下所示:

INSERT INTO public.organisations ("name")
VALUES('StackOverflow')
RETURNING *

這將返回包含名稱,數據和ID的行。 數據是一個空JSON,可以忽略,id是下面使用的UUID。

更新查詢如下所示,其中<orgId>表示由上述插入生成並返回的UUID,而<userId>表示從代碼傳入的值:

UPDATE public.users
SET id_organisation = <orgID>, last_modified_by = <userID>
WHERE id = <userID>;

這兩個查詢都有效,但是我不知道如何將它們串在一起並返回第一個查詢的輸出。

是否可以執行此操作?還是只運行兩個查詢會更好?

使用CTE:

with i as (
      INSERT INTO public.organisations ("name")
          VALUES('StackOverflow')
          RETURNING *
     )
UPDATE public.users
    SET id_organisation = (SELECT i.id FROM i LIMIT 1),        last_modified_by = <userID>
    WHERE id=<userID>;

請注意,這使用帶有LIMIT的子查詢-這樣可以保證最多返回一行。

是一個db <> fiddle,說明了語法的工作原理。

暫無
暫無

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

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