根据当前记录更新 table
Update table based on current record
在我的 PostgreSQL 数据库中,出于各种原因,我正在从整数键转换为 UUID。所以现在我有 table 人和 ident serial primary key
,以及 table TeamPerson 和 person_id integer references Person (ident)
。
然后我去添加一个 uid UUID
列,其中对 Person 具有唯一约束,并向 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
的光标,但我只是不知道如何做。
您可能正在寻找:correlated subquery,也称为 "dependent subquery"
In a SQL database query, a correlated subquery (also known as a
synchronized subquery) is a subquery (a query nested inside another
query) that uses values from the outer query.
UPDATE TeamPerson tp
SET person_uid = (
SELECT uid FROM Person p
WHERE p.ident = tp.person_id
)
在我的 PostgreSQL 数据库中,出于各种原因,我正在从整数键转换为 UUID。所以现在我有 table 人和 ident serial primary key
,以及 table TeamPerson 和 person_id integer references Person (ident)
。
然后我去添加一个 uid UUID
列,其中对 Person 具有唯一约束,并向 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
的光标,但我只是不知道如何做。
您可能正在寻找:correlated subquery,也称为 "dependent subquery"
In a SQL database query, a correlated subquery (also known as a synchronized subquery) is a subquery (a query nested inside another query) that uses values from the outer query.
UPDATE TeamPerson tp
SET person_uid = (
SELECT uid FROM Person p
WHERE p.ident = tp.person_id
)