Oracle
 sql >> Base de données >  >> RDS >> Oracle

Mettre à jour automatiquement le champ dans la base de données

les informations sur la colonne TMP_PONYLIST est redondant (il existe ailleurs). Vous rencontrerez toutes sortes de problèmes pour le maintenir (aucune solution ne fonctionnera correctement dans un environnement multi-utilisateurs à moins qu'il n'y ait une sorte de mécanisme de verrouillage).

Dans un modèle normalisé, vous supprimeriez simplement cette colonne du modèle physique. Si vous avez besoin d'informations, vous pouvez utiliser une vue, par exemple avec 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;

Voir ce SO par exemple d'agrégation de chaînes avant 11gR2.