根据当前记录更新表

时间:2017-02-10 17:04:02

标签: postgresql sql-update cursor

在我的PostgreSQL数据库中,我出于各种原因从整数键转换为UUID。所以我现在有一个表格ident serial primary key,表格TeamPerson一个person_id integer references Person (ident)

然后,我将向Person添加一个uid UUID列,并为TeamPerson添加一个person_uid references Person (uid)列。所以现在我需要让所有person_uid对应于person_id引用。我想要的东西是:

UPDATE TeamPerson
SET person_uid = (
    SELECT uid FROM Person WHERE ident = current_team_person_row.person_id
)

current_team_person_row是我试图解决的问题。我想我需要一个WHERE CURRENT OF的光标,但我还没有理解如何做到这一点。

1 个答案:

答案 0 :(得分:0)

您可能正在寻找:correlated subquery,也称为“依赖子查询”

  

在SQL数据库查询中,相关子查询(也称为   synchronized子查询)是一个子查询(嵌套在另一个子查询中的查询)   查询)使用外部查询中的值。

UPDATE TeamPerson tp
SET person_uid = (
    SELECT uid FROM Person p 
    WHERE p.ident = tp.person_id
)