Tres consejos básicos:
1) No crees TRIGGERs desde programación. No es una buena práctica y está sujeto a errores probables, porque los lenguajes de programación no manejan bien ciertas estructuras propias de la creación de rutinas.
2) Nunca uses el pipe (|), el ampersand (&) e incluso el porcentual (%)como delimitador, y menos con un único caracter. Esos símbolos se usan para operaciones propias del lenguaje SQL y pueden dar resultados erróneos en la ejecución. Por algo el manual de MySQL usa "$$" en los ejemplos, ¿no te parece?
3) No se usan DELIMITERS en la creacion de rutinas almacenadas desde programación. No es funcional porque es exclusivamente un comando de consola o script de SQL, y las librerías no lo entienden.
Envía a ejecutar directamente primero
Y luego esto (no, no se puede hacer en una única operación):