Ver Mensaje Individual
  #2 (permalink)  
Antiguo 20/02/2012, 15:33
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, 4 meses
Puntos: 2658
Respuesta: Trigger no me permite Borrar todas las filas

Código MySQL:
Ver original
  1. ...
  2. AFTER UPDATE ON `ncpp`.`temp_asigdefpub`
  3. ...
  4. DELETE FROM temp_asigdefpub WHERE...

No puedes hacer operaciones DML (DELETE/INSERT/UPDATE) contra la misma tabla que dispara el TRIGGER, tan sencillo como eso. Y además, un TRIGGER es una tarea cerrada que no se puede invocar, y que no devuelve datos, por lo que ese SELECT final no tiene cabida en él.

Todo el proceso que estás intentando hacer es completamente ineficiente y un destructor de perfomance, si lo haces en un TRIGGER. Lo que propones tiene más sentido en un stored procedure.

Estás perdiendo la perspectiva de que un TRIGGER es una rutina que se ejecuta una vez por cada ejecución del evento que lo dispara. y en tu caso eso quiere decir que por cada vez que se haga un UPDATE en un registro de esa tabla quieres que:
1) Se vuelque el contenido completo de la tabla en otra.
2) Borrar toda la tabla del trigger.
3) Insertar dos valores inexistentes (porque no están definidos en el cuerpo del trigger) dentro de la tabla, nuevamente.
4) Realizar una consulta con SELECT a la misma tabla (que no se puede tomar, porque un TRIGGER no devuelve datos).

Todo esto, según tu, se debería ejecutar cada vez que un registro de esa tabla sea actualizado...
¿Le encuentras algún sentido?

No. Lo que propones no tiene sentido.

Empeiza por el principio y explica qué es lo que se supone que debe hacerse cuando se hace un UPDATE a la tabla y para qué.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)