小编Roc*_*ces的帖子

使用从其他表上插入返回的 id 更新表

我试图弄清楚如何将 Table1 中的数据插入到 Table2 中,然后使用 Table2 中新创建的 ID 来更新 Table1 中的相应行。

我使用 Postgres 12.4 是为了它的价值

示例:我有两个表,例如usersmetadata

用户表有以下列

| id | info | metadata_id |
Run Code Online (Sandbox Code Playgroud)

元数据表有以下列

| id | data |
Run Code Online (Sandbox Code Playgroud)

我想将表中的所有info值迁移到表的列users中,并使用相应的值更新我的值(当前为空白),本质上是回填外键。datametadatausers.metadata_idmetadata.id

有什么办法可以优雅地完成这个任务吗?我有一个工作查询,它​​锁定两个表并创建一个临时序列以插入到 and 中metadata.idusers.metadata_id但这似乎很脆弱,我需要在元数据表中现有的最高 ID 之后启动序列,这并不理想。

我还尝试使用带有 RETURNING 子句的数据修改 CTE 来更新表users,但无法使其正常工作。

sql postgresql common-table-expression sql-update sql-insert

2
推荐指数
1
解决办法
1262
查看次数