informace ve sloupci TMP_PONYLIST
je redundantní (existuje někde jinde). Při jeho údržbě se dostanete do nejrůznějších problémů (Žádné řešení nebude fungovat správně v prostředí pro více uživatelů, pokud neexistuje nějaký zamykací mechanismus).
V normalizovaném modelu byste tento sloupec jednoduše vypustili z fyzického modelu. Pokud potřebujete informace, můžete použít pohled, například s 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;
Viz toto SO například agregace řetězců před 11gR2.