¿Cómo le digo a Postgres que convierta los valores existentes en valores nuevos?

¿Cómo le digo a Postgres que convierta los valores existentes en valores nuevos?

Problema

Tengo una tabla que tiene parent_idy child_idy 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:

  1. CREAR una nueva columna, external_ids.

  2. 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>
    
  3. 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);

información relacionada