la información en la columna TMP_PONYLIST
es redundante (existe en otro lugar). Tendrá todo tipo de problemas para mantenerlo (Ninguna solución funcionará correctamente en un entorno multiusuario a menos que haya algún tipo de mecanismo de bloqueo).
En un modelo normalizado, simplemente eliminaría esta columna del modelo físico. Si necesita la información, podría usar una vista, por ejemplo con 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;
Consulte este SO por ejemplo, de agregación de cadenas antes de 11gR2.