Postgre SQL   发布时间:2022-05-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了PostgreSQL多INSERT …返回多列大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用PostgreS 9.3构建一个数据库作为后端,有3个表:
table1 (user_iD,username,name,surname,emp_datE)
table2 (pass_ID,user_iD,password)
table3 (user_dt_ID,adress,city,phonE)

可以看出table2和table3是table1的子表.
我可以在table1(parent)中提取新插入行的user_iD:

INSERT INTO "table1" (default,'johnee','john','smith',default) RETURNING userID;

我需要将新提取的ID(来自table1)插入table2和table3的user_iD列以及这些表的唯一数据.基本上3 X INSERT ……
我怎么做?

使用 data-modifying CTEs链接三个INSERT.像这样的东西:
WITH ins1 AS (
   INSERT INTO table1 (username,surName)
   VALUES ('johnee','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,phonE)
SELECT ins1.user_iD,...
FROM   ins1
RETURNING user_iD;

>建议始终为INSERT添加列定义列表(ad-hoc代码除外).否则,如果表结构发生变化,您的代码可能会以惊人的方式中断.
>我省略了列定义列表中您只需输入DEFAulT的列.默认值自动应用.更短,相同的结果.
>如果你想要返回结果user_iD,那么最后的RETURNING是可选的(显然是从一个序列或其他默认值.它实际上从table3返回user_iD,但除非你有一些触发器或其他魔法干扰,否则它是相同的.

有关数据修改(a.k.a.“可写”)CTE的更多详细信息:

> Are SELECT type queries the only type that can be nested?

大佬总结

以上是大佬教程为你收集整理的PostgreSQL多INSERT …返回多列全部内容,希望文章能够帮你解决PostgreSQL多INSERT …返回多列所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: