Tema: Otro trigger
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/05/2012, 18:27
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Otro trigger

Primero: No dupliques temas. Ya habías abierto otro para este asunto (Trigger before insert).

Segundo: No se puede hacer una operación DML (INSERT/UPDATE/DELETE) dentro de un trigger, contra la misma tabla que posee el trigger. La tabla está bloqueada para escritura, por lo que no funcionará.
Esto tiene su razón de ser: Si un trigger es invocado en el INSERT y hace un INSERT a la misma tabla, ese segundo disparará otra vez el trigger, que a su vez intentará insertar los datos... y así hasta el infinito. ¿Se comprende?

Tercero: En MySQL los triggers no son opcionales, lo que significa que no puedes detener su ejecución. Entonces no podrías hacer algo que apruebe o no la operación, por lo que si lo enviaste a insertar, lo intentará o fallará.

Cuarto: Es absurdo usar un trigger para validar la misma operación que lo dispara. Las validaciones se hacen antes de intentar insertar. No durante el INSERT.
No tiene ningún sentido intentar la operación si los datos no han sido verificado, es una pésima práctica.
Toda validación de datos se hace en la aplicación y consultando a la base, pero cuando se envía a insertar, es terminal. No debe agregar ninguna validación más.
Es muy propio de programadores tratar de darle a la base esas responsabilidades, simplemente para no tener que hacer lo que deben en la aplicación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)