Mostrando las entradas con la etiqueta signal exception. Mostrar todas las entradas
Mostrando las entradas con la etiqueta signal exception. Mostrar todas las entradas

domingo, 1 de junio de 2014

Raise (Signal) MySql Exception

It's true that we can do a lot of data validation on the front-end. But, in some cases, it happens that is more convenient to do it at the server side. No only because it helps us to enforce data integrity, but because changes in stored procedures, functions, triggers, etc doesn't involve recompile and redistribute the application executable file.

It happens then that in some cases we need to raise an exception from a stored procedure as a way to let the front-end know that the process was not executed correctly. ¿How to do it in MySQL?. The basic sentence is very simple:

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Error Message';

In the following video we have a brief example (video is in spanish but you can get an idea just by watching):



This works from MySQL 5.5 and above. It basically assigns an error code ('45000' in this case) and a message as a text for the exception. There are predefined error codes (check this list) but because we want to raise an excepcion (or SIGNAL in MySQL) is for our app/database only then its better to use one code that doesn't exists in that list.

If we wanted to be much more specific about the information we want to send as part of the exception, we can set some other values.

My first search about this topic lead me to a StackOverFlow post and from the a search by jumping from link to link.

¡Greetings!

Levantar una Excepción en MySql / Raise (Signal) MySql Exception

Es  muy cierto que en el front-end podemos realizar muchísimas de las validaciones necesarias a los datos. Sin embargo, en ocasiones resulta más conveniente realizarlo en el lado del servidor, no solo porque nos ayuda a cuidar la integridad de la base de datos, sino porque un cambio en un procedimiento almacenado, trigger, etc. no implica recompilar y redistribuir el ejecutable de la aplicación.

Resulta entonces que en ocasiones necesitamos lanzar una excepción desde un procedimiento almacenado como manera de avisar al front-end de que el proceso no pudo ser ejecutado correctamente. ¿Cómo hacerlo en MySql?. La instrucción básica es muy sencilla:

SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Mensaje de Error';

En el siguiente video podemos ver un ejemplo sencillo:



Esto funciona a partir de la versión 5.5 de MySql. Básicamente se asigna un código de error ('45000' en este caso) y un mensaje como texto de la excepción. Existen códigos de error predefinidos por MySql (ver la lista) aunque, dado que la excepción ó signal que queremos levantar es propia de nuestra aplicación/base de datos, es preferible utilizar un código que no exista en esa lista.

Si quisiéramos ser mucho más específicos en la información que queremos enviar como parte de la excepción, podemos establecer otros valores.

Mi primera consulta acerca de este tema me llevó a un tema en StackOverFlow y de allí busqué un poco más con un par de saltos en la web.

Saludos!