Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/06/2007, 10:19
Avatar de paul77
paul77
 
Fecha de Ingreso: septiembre-2004
Mensajes: 25
Antigüedad: 19 años, 7 meses
Puntos: 0
Re: Consulta sobre Triggers

Hola Claudio, ese link ya lo habia visto, y no me ayudo mucho.

- Ya que uno de los usuarios que respondio a la consulta hecha fué que se
podría ejecutar una sentencia que violara una restriccion y asi arroja un error
y no ejecutaria la accion (INSERT, UPDATE o DELETE).

EJ:

CREATE TRIGGER chequea_precio BEFORE INSERT OR UPDATE ON libros
FOR EACH ROW
....
IF new.precio <= 0
INSERT INTO tabla (id) values (NULL);
END IF;
END;
....

Donde el campo id de la tabla no puede ser NULL, esto funciona debido a que no ejecuta la accion (INSERT, UPDATE o DELETE), pero muestra un error de violacion de restricción.

Pero es esta forma transparente, o digna de una Base de Datos Relacional????

No lo creo, lo ideal seria que podamos arrojar nuestros propios mensajes de error y se cancele la acción.

- Otra cosa que decia otro usuario, era crear un procedimiento almacenado
que maneje errores personalizados, lo hice tambien, y en triggers se puede
llamar al procedimiento, pero me arroja un error que el trigger no puede
devolver ese tipo de dato.
ERROR 1415 (0A000): Not allowed to return a result set from a trigger

Además me imagino que si funcionara, solo retornaría el mensaje, pero no cancelaría la acción (INSERT, UPDATE o DELETE), y eso es lo que le falta a MySQL con respecto a los triggers segun mi modesta opinión.

Algo como una clausula EXIT, CONTINUE, he probado de muchas formas y aun no encuentro la correcta.

Gracias de todas maneras Claudio por tu ayuda.

Disculpen lo largo del post, me emocioné :-p