sql >> Base de Datos >  >> RDS >> Oracle

Actualizar campo automáticamente en la base de datos

la información en la columna TMP_PONYLIST es redundante (existe en otro lugar). Tendrá todo tipo de problemas para mantenerlo (Ninguna solución funcionará correctamente en un entorno multiusuario a menos que haya algún tipo de mecanismo de bloqueo).

En un modelo normalizado, simplemente eliminaría esta columna del modelo físico. Si necesita la información, podría usar una vista, por ejemplo con Oracle 11gR2:

CREATE OR REPLACE VIEW rider_v AS
SELECT rider_id, /*...,*/
       (SELECT listagg(p.pony_name, ';') WITHIN GROUP (ORDER BY p.pony_name)
          FROM t_pony p
          JOIN t_rider_pony rp ON (p.pony_id = rp.pony_id)
         WHERE rp.rider_id = r.rider_id) tmp_ponylist
  FROM t_rider r;

Consulte este SO por ejemplo, de agregación de cadenas antes de 11gR2.