Ver Mensaje Individual
  #6 (permalink)  
Antiguo 17/03/2007, 16:33
abulon
 
Fecha de Ingreso: diciembre-2006
Mensajes: 127
Antigüedad: 17 años, 5 meses
Puntos: 1
Sonrisa Re: ayuda con trigger para validacion al insertar

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 y te sirva...ok

Saludos