2017-02-10 2 views
0

In meiner PostgreSQL-Datenbank konvertiere ich aus verschiedenen Gründen von Integer-Schlüssel zu UUID. Also im Moment habe ich Tabelle Person mit einer ident serial primary key, und Tabelle TeamPerson mit einer person_id integer references Person (ident).Update-Tabelle basierend auf aktuellen Datensatz

Ich gehe dann und fügen Sie eine uid UUID Spalte mit einer eindeutigen Einschränkung für Person und eine person_uid references Person (uid) Spalte zu TeamPerson. Jetzt muss ich also alle person_uid den person_id-Referenzen entsprechen lassen. Ich will so etwas wie:

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

The current_team_person_row ist mein Problem, das ich zu lösen bin versucht. Ich denke, ich brauche einen Cursor mit einer WHERE CURRENT OF, aber ich verstehe nur nicht, wie dies zu tun ist.

Antwort

0

Sie wahrscheinlich suchen: correlated subquery, auch bekannt als „abhängige Unterabfrage“

In einer SQL-Datenbank-Abfrage, eine korrelierte Unterabfrage (auch als synchronisiert Unterabfrage bekannt) ist eine Unterabfrage (eine Abfrage verschachtelt innerhalb einer anderen Abfrage), die Werte aus der äußeren Abfrage verwendet.

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

Argh, ich war so nah! Vielen Dank! :) – Gargoyle

Verwandte Themen