給定具有 3 個表的 postgres 資料庫:
users(user_id: uuid, ...)
urls(slug_id:int8 pkey, slug:text unique not null, long_url:text not null)
userlinks(user_id:fkey users.user_id, slug_id:fkey urls.slug_id)
pkey(user_id, slug_id)
userlinks 表作為交叉參考存在,用于將 url slug 與一個或多個用戶相關聯。
當我想插入到 urls 表中的用戶創建新的 slug 時,獲取在那里創建的 slug_id,插入到具有當前用戶 ID 和 slug_id 的用戶鏈接中
然后,如果可能,將兩個結果作為記錄表回傳。當前用戶 ID 可通過 auth.uid() 訪問我正在使用 supabase 中的存盤程序執行此操作
我已經走了這么遠,但我被卡住了:
WITH urls_row as (
INSERT INTO urls(slug, long_url)
VALUES ('testslug2', 'testlong_url2')
RETURNING slug_id
)
INSERT INTO userlinks(user_id, slug_id)
VALUES (auth.uid(), urls_row.slug_id)
--RETURNING *
--RETURNING (urls_record, userlinks_record)
uj5u.com熱心網友回復:
嘗試這個 :
WITH urls_row as (
INSERT INTO urls(slug, long_url)
VALUES ('testslug2', 'testlong_url2')
RETURNING slug_id
), userlink_row AS (
INSERT INTO userlinks(user_id, slug_id)
SELECT auth.uid(), urls_row.slug_id
FROM urls_row
RETURNING *
)
SELECT *
FROM urls_row AS ur
INNER JOIN userlink_row AS us
ON ur.slug_id = us.slug_id
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331620.html
標籤:sql PostgreSQL
下一篇:具有按日期分組的過濾值和總數
