利用多列 RETURNING 进行高效的 PostgreSQL 插入
在数据管理领域,使用单个 RETURNING 执行多个插入的能力条款可以简化操作并提高效率。本文深入探讨了 PostgreSQL 9.3 中多重插入操作的复杂性,展示了如何在检索新生成的 ID 的同时将数据无缝插入到多个子表中。
该场景涉及三个表:
手头的任务是插入数据到 table1 中,同时用新生成的数据填充 table2 和 table3 中的 user_id 列user_id.
为了实现此目的,我们采用数据修改通用表表达式 (CTE)。 CTE 允许我们将多个 SQL 语句组合到一个单元中,从而简化插入过程。以下是 CTE 实现的详细分解:
WITH ins1 AS ( -- Insert into 'table1' INSERT INTO table1 (username, name, surname) VALUES ('johnee', 'john', 'smith') RETURNING user_id ), ins2 AS ( -- Insert into 'table2' with 'user_id' from 'ins1' INSERT INTO table2 (user_id, password) SELECT ins1.user_id, 'secret' FROM ins1 -- No need to return anything here ) INSERT INTO table3 (user_id, adress, city, phone) -- Insert into 'table3' with 'user_id' from 'ins1' SELECT ins1.user_id, ... FROM ins1 RETURNING user_id;
关键实现细节:
总之,在 PostgreSQL 中使用带有 RETURNING 的多重插入允许跨多个表进行单批插入,从而降低复杂性并优化性能。数据修改 CTE 提供了一种便捷的方法来实现这一目标,为复杂的数据插入工作流程提供高度可靠且高效的解决方案。
以上是多列返回如何增强 PostgreSQL 跨多个表的插入?的详细内容。更多信息请关注PHP中文网其他相关文章!