Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Consulta sobre Triggers

Estas en el tema de Consulta sobre Triggers en el foro de Mysql en Foros del Web. Hola amigos, quiero hacer una consulta con respecto a los triggers en MySQL. Me gustaria saber si alguen ha podido hacer un trigger que impida ...
  #1 (permalink)  
Antiguo 23/06/2007, 21:56
Avatar de paul77  
Fecha de Ingreso: septiembre-2004
Mensajes: 25
Antigüedad: 19 años, 7 meses
Puntos: 0
Pregunta Consulta sobre Triggers

Hola amigos, quiero hacer una consulta con respecto a los triggers en MySQL.

Me gustaria saber si alguen ha podido hacer un trigger que impida realizar una accion (insert,update o delete), me explico:

En Postgres, Oracle existe el manejo de excepciones, por medio de esto se puede mostrar errores segun una condicion.

EJ:

CREATE TRIGGER chequea_precio BEFORE INSERT OR UPDATE ON libros
FOR EACH ROW
....
IF new.precio <= 0
THEN RAISE EXCEPTION ''El Precio debe ser mayor a cero.'';
END IF;
END;
....

Con la clausula RAISE EXCEPTION envia un mensaje cuando se cumple la condicion y asi no realiza el INSERT o UPDATE.

He googleado como loco y no he encontrado algo parecido en MySQL, me gustaria saber si alguien ha podido emular esto de alguna manera, porque me imagino que mas de uno ha necesitado de esta opcion (a mi parecer muy potente) que todo Gestor de BD deberia tener.

Me parece que en este sentido a MySQL le falta un poco mas de desarrollo en cuanto a los triggers, ademas de algunos otros detalles que no mencionare para no alargar mas este post.

Gracias de antemano por las respuestas
  #2 (permalink)  
Antiguo 24/06/2007, 23:10
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
Re: Consulta sobre Triggers

Encontré algo del 2006,

http://forums.mysql.com/read.php?10,...902#msg-115902
  #3 (permalink)  
Antiguo 25/06/2007, 10:19
Avatar de 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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:13.