sql >> Database >  >> RDS >> Oracle

Veld automatisch bijwerken in database

de informatie in de kolom TMP_PONYLIST is overbodig (het bestaat ergens anders). Je krijgt allerlei problemen om het te onderhouden (geen enkele oplossing werkt correct in een omgeving met meerdere gebruikers, tenzij er een soort vergrendelingsmechanisme is).

In een genormaliseerd model zou je deze kolom gewoon uit het fysieke model laten vallen. Als u de informatie nodig heeft, kunt u een weergave gebruiken, bijvoorbeeld met 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;

Zie deze SO bijvoorbeeld van stringaggregatie vóór 11gR2.



  1. CodeIgniter/PHP/MySQL:gegevens ophalen met JOIN

  2. SQLAlchemy with_for_update rijvergrendeling werkt niet?

  3. Controleer of de gebruikersnaam al bestaat met MySQLi

  4. MySQL geeft alle datums tussen bereik weer