PostgreSQL多INSERT …返回多列
发布时间:2020-12-13 18:06:36 所属栏目:百科 来源:网络整理
导读:我正在使用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)中提取
我正在使用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的子表. 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代码除外).否则,如果表结构发生变化,您的代码可能会以惊人的方式中断. 有关数据修改(a.k.a.“可写”)CTE的更多详细信息: > Are SELECT type queries the only type that can be nested? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |