使用 PostgreSQL 的 CTE 插入多行
假設您有一個包含三個表格的關聯式資料庫:table1、table2 和 table3。表table1保存一般用戶信息,而表table2和table3包含附加數據,例如密碼和地址。當您在 table1 中新增使用者時,您希望同時將使用者 ID 和其他唯一資料插入子表 table2 和 table3 中。
Postgres 9.3 的 資料修改 CTE 提供這種情況的解決方案。 CTE 可讓您有效率地連結多個 INSERT 操作。
以下是如何使用數據修改CTE 來完成您的任務:
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 -- Nothing to return here ) INSERT INTO table3 (user_id, address, city, phone) SELECT ins1.user_id, ..., ... FROM ins1 RETURNING user_id;
CTE 細分:
使用 ins1 中的 user_id 將資料插入 table2 中。由於不需要傳回值,因此將其省略。
最終 INSERT:以上是PostgreSQL CTE 如何有效率地在多個表格中插入多行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!