首頁 > 資料庫 > mysql教程 > 如何在 PostgreSQL 中使用 RETURNING 高效連結多個 INSERT 語句?

如何在 PostgreSQL 中使用 RETURNING 高效連結多個 INSERT 語句?

Mary-Kate Olsen
發布: 2024-12-31 10:52:09
原創
564 人瀏覽過

How Can I Efficiently Chain Multiple INSERT Statements with RETURNING in PostgreSQL?

在PostgreSQL 中使用RETURNING 連結多個INSERT

使用分層資料庫時,通常需要將資料插入具有依賴關係的多個表中。在 PostgreSQL 中,資料修改 CTE 和 RETURNING 子句的組合提供了一個有效的解決方案。

要將新行插入到父表table1 中並填入子表table2 和table3 中的相關行,請遵循以下步驟步驟:

WITH ins1 AS (
   INSERT INTO table1 (username, name, surname)
   VALUES ('johnee','john','smith')
   RETURNING user_id
   )
, ins2 AS (
   INSERT INTO table2 (user_id, password)
   SELECT ins1.user_id, 'secret'
   FROM   ins1
   )
INSERT INTO table3 (user_id, adress, city, phone)
SELECT ins1.user_id, ...
FROM   ins1
RETURNING user_id;
登入後複製

分解CTE鏈:

  • 第一個CTE ins1,將新行插入table1中,並傳回產生的 user_id。
  • 第二個 CTE ins2,將對應行插入 table2 中使用從 ins1 傳回的 user_id。
  • 最終的 INSERT 語句使用來自 ins1 的 user_id向 table3 中插入​​一行。可選的 RETURNING 子句傳回結果 user_id,通常來自序列或預設值。

使用資料修改CTE 的好處:

  • 連結插入: CTE 允許您連結多個INSERT 語句,確保多個INSERT 語句正確的操作順序。
  • 簡單性:使用WITH CTE使查詢更具可讀性和可維護性。
  • 效率:CTE可以提高效能透過最佳化 INSERT 語句的執行順序。

以上是如何在 PostgreSQL 中使用 RETURNING 高效連結多個 INSERT 語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板