die Informationen in der Spalte TMP_PONYLIST
ist überflüssig (es existiert woanders). Sie werden auf alle möglichen Probleme stoßen, um es zu warten (Keine Lösung wird in einer Umgebung mit mehreren Benutzern richtig funktionieren, es sei denn, es gibt eine Art Sperrmechanismus).
In einem normalisierten Modell würden Sie diese Spalte einfach aus dem physischen Modell entfernen. Wenn Sie die Informationen benötigen, können Sie eine Ansicht verwenden, z. B. mit 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;
Siehe diese SO zum Beispiel der String-Aggregation vor 11gR2.