Oracle
 sql >> Database >  >> RDS >> Oracle

Aggiorna automaticamente il campo nel database

le informazioni nella colonna TMP_PONYLIST è ridondante (esiste da qualche altra parte). Incontrerai tutti i tipi di problemi per mantenerlo (nessuna soluzione funzionerà correttamente in un ambiente multiutente a meno che non ci sia una sorta di meccanismo di blocco).

In un modello normalizzato dovresti semplicemente eliminare questa colonna dal modello fisico. Se hai bisogno delle informazioni, puoi utilizzare una vista, ad esempio 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;

Vedi questo SO ad esempio di aggregazione di stringhe prima di 11gR2.