使用 PostgreSQL 的 INSERT...RETURNING 和 CTE 向子表插入多个值
从父表 table1 插入新提取的 user_id在其子表 table2 和 table3 中,PostgreSQL 使用数据修改通用表表达式提供了一个优雅的解决方案(CTE)。
使用 CTE,我们可以链接多个 INSERT 语句以在单个事务中执行多个操作:
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;
此代码遵循分步过程:
要点:
以上是PostgreSQL CTE 和 INSERT...RETURNING 如何高效地将数据插入父表和子表?的详细内容。更多信息请关注PHP中文网其他相关文章!