информацията в колоната TMP_PONYLIST
е излишен (съществува някъде другаде). Ще се сблъскате с всякакви проблеми, за да го поддържате (Нито едно решение няма да работи правилно в среда с много потребители, освен ако няма някакъв механизъм за заключване).
В нормализиран модел просто бихте изпуснали тази колона от физическия модел. Ако имате нужда от информацията, можете да използвате изглед, например с 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;
Вижте това SO например на агрегиране на низове преди 11gR2.