
| |||
![]() Hola, alguien que me ayude con los trigger en mysql, se que se puede validar para insertar datos pero el codigo que debo utilizar no lo tengo muy claro, si alguien me puede ayudar lo agradeceria mucho. ![]() |
| |||
![]() Es para validar los valores que se van a insertar pues lo que se es que se puede validar por código por ejemplo utilizando como parametros código ascii. De lo que leí de mysql es que en la inserción puedo validar los datos que se van a ingresar pero la verdad no he encontrado un ejemplo claro para esto, me gustaria realizar esto mediante mysql. agradezco toda la ayuda posible Dios los bendiga ![]() |
| |||
![]() tu quieres validar los caracteres no validos de una cadena que insertas como parametro?......puedes usar igual procecures y funciones!!....o tu quieres hacerlo con triggers?... |
| |||
![]() hola abulon Se que puedo colocar procedimientos almacenados con los triggers, pero la cuestion es como se que se debe escribir para identificar que se insertar y que no en los campos ¿Qué se debe escribir? ¿cual sería la forma de restringir los datos? agradezco su colaboración ![]() |
| |||
![]() Hola lyha Aqui te pongo un ejemplo: CREATE TABLE PRUEBA ( IDCLAVE CHAR(10) PRIMARY KEY, DESCRIP VARCHAR(30) ); Ahora crearemos una funcion solo para validar caracteres ASCII que no esten entre 32 y 47, ya que insertaremos en un campo que es llave primaria, recuerda que las claves primarias no contienes espacios ni caracteres ascii entre 32 y 47, en este ejemplo que pondre: CREATE FUNCTION OK (CADENA VARCHAR(10)) RETURNS INTEGER BEGIN DECLARE LONG_CAD INT; DECLARE CARASC INT; DECLARE i INT DEFAULT 1 ; DECLARE B INT DEFAULT 1; declare C int; SET LONG_CAD=LENGTH(CADENA); IF LONG_CAD=1 OR LONG_CAD=0 THEN SET B=0; ELSEIF LONG_CAD>1 THEN WHILE (i<=LONG_CAD AND B=1) DO SET CARASC=ASCII(SUBSTR(CADENA,I,1)); SELECT CARASC BETWEEN 32 AND 47 INTO C; IF C=0 THEN SET i=i+1; SET B=1; ELSEIF C=1 THEN SET B=0; END IF; END WHILE; END IF; RETURN B; END; Ahora el procedure que llamara a la funcion para validar : CREATE PROCEDURE OKPRUEBA (IN CADENA VARCHAR(10),IN DESCRIP VARCHAR(30)) BEGIN IF OK(CADENA)=1 THEN INSERT INTO PRUEBA VALUES(CADENA,DESCRIP); SELECT 'ROW INSERTED OK' AS RESULTADO; ELSEIF OK(CADENA)=0 THEN SELECT 'EL CAMPO CLAVE CONTIENE CARACTERES NO VALIDOS' AS ERROR; END IF; END; Con esto tienes un ejemplo, espero lo entiendas ![]() Saludos |