首页 > 数据库 > mysql教程 > 如何在 PostgreSQL 中使用 RETURNING 高效链接多个 INSERT 语句?

如何在 PostgreSQL 中使用 RETURNING 高效链接多个 INSERT 语句?

Mary-Kate Olsen
发布: 2024-12-31 10:52:09
原创
539 人浏览过

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 语句,确保正确的操作顺序。
  • 简单性:使用WITH CTE使查询更具可读性和可维护性。
  • 效率:CTE可以提高性能通过优化 INSERT 语句的执行顺序。

以上是如何在 PostgreSQL 中使用 RETURNING 高效链接多个 INSERT 语句?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板