
Problema
Tengo una tabla que tiene parent_id
y child_id
y son mutuamente excluyentes, por lo que, naturalmente, deberían tener solo un valor, no dos. Necesito reemplazarlos con external_id
.
Por lo tanto, las identificaciones de cualquier niño ahora se convertirán en identificaciones externas, y las identificaciones de cualquier padre también se convertirán en identificaciones externas.
¿Cómo puedo hacer que postgres convierta los identificadores a la nueva columna?
Solución potencial y desordenada
Lo único que se me ocurre es realizar esto en unos pocos pasos muy complicados, pero espero que haya una manera mejor:
CREAR una nueva columna,
external_ids
.Imprima todos los ID de padres e hijos, incluso si son nulos, en una serie de cadenas ACTUALIZAR, como
UPDATE table SET external_id = "<parent or child id>" WHERE row_id = <row_id>
Ejecute cada cadena de actualización individualmente, y parece que podría llevar mucho tiempo, por eso creo que debe haber una manera mejor.
Respuesta1
Verifique la función de fusión.
UPDATE table SET external_id = coalesce( parent_id, child_id);