MySQL - Limitar rango valores (INTEGER)

 
Vista:
sin imagen de perfil

Limitar rango valores (INTEGER)

Publicado por Octavio Lanzone (5 intervenciones) el 09/06/2008 06:13:27
Hola a todos...

Tenemos la siguiente tabla:

servicio

Con los campos:

codservicio (INTEGER), descripcion (VARCHAR(45))

queremos que el codigo de servicio, q es clave, este entre 0 y 1.000.000.000, pero no sabemos como hacer esto.

Segun entendemos mysql no soporta checks y tenemos que usar un trigger. PERO NO SABEMOS COMO HACERLO !!!!!! :(

Otra cosa probamos este trigger y NO FUNCIONA DE NINGUNA FORMA :( NOS HEMOS CANSADO DE GOOGLEAR Y DEMAS PERO NO ENCONTRAMOS NADA QUE NOS SIRVA:

/*PRUEBA Nro 80 */ SI SI LEYERON BIEN 80 !!!

DELIMITER $$
CREATE TRIGGER validarServicio
BEFORE INSERT ON gcp1.servicio
FOR EACH ROW BEGIN
IF ((NEW.nroservicio < 0) OR (NEW. > 1000000000)) THEN
EXCEPTION(' error de dato!!!!!');
END
END$$
DELIMITER ;

DESDE YA MUCHAS GRACIAS A CUALQUIER Q RESPONDA!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Limitar rango valores (INTEGER)

Publicado por Ery (69 intervenciones) el 09/06/2008 13:20:15
1) No puedes generar exception desde ningun sitio en MySQL
2) La Unica forma de hacerlo el haciendo tu propia libreria e incluyendolo en el fuente, para que lo compiles
3) Haz un Vista actualizable y usas CHECK OPTION mas sencillo
4) Cuando lo haces con un Trigger lo que haces es que tu insertas datos en una tabla temportal el trigger lo evalua y si es correcto lo incorpora en la real.
5) O hazlo a travès de un procedimiento almacenado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Limitar rango valores (INTEGER)

Publicado por Octavio (5 intervenciones) el 10/06/2008 20:18:46
Ya he logrado solucionar el problema, el Trigger se escibia correctamente de esta manera (cambiando null por un valor q queremos en este caso me interesa q sea null)

delimiter $$
CREATE TRIGGER validarServicio
BEFORE INSERT ON servicio
FOR EACH ROW BEGIN
IF (NEW.codServicio > 100) THEN
set NEW.codServicio = NULL;
END IF;
END $$
delimiter ;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar