[英]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.