refs #4951 changed triggers and added checkLength
gitea/salix/pipeline/head There was a failure building this commit Details

This commit is contained in:
Alexandre Riera 2023-01-04 08:36:55 +01:00
parent 949c73a465
commit f499311a16
1 changed files with 83 additions and 0 deletions

View File

@ -0,0 +1,83 @@
DROP TRIGGER IF EXISTS vn.XDiario_beforeUpdate;
USE vn;
DELIMITER $$
$$
CREATE DEFINER=`root`@`localhost` TRIGGER `vn`.`XDiario_beforeUpdate`
BEFORE UPDATE ON `XDiario`
FOR EACH ROW
BEGIN
IF NOT NEW.SUBCTA <=> OLD.SUBCTA THEN
IF NOT util.checkLength(NEW.SUBCTA, 10) THEN
CALL util.throw('INVALID_LENGTH');
END IF;
END IF;
IF NOT NEW.CONTRA <=> OLD.CONTRA THEN
IF NOT util.checkLength(NEW.CONTRA, 10) THEN
CALL util.throw('INVALID_LENGTH');
END IF;
END IF;
IF NOT NEW.FECHA <=> OLD.FECHA THEN
CALL XDiario_checkDate(NEW.FECHA);
END IF;
IF NOT NEW.FECHA_EX <=> OLD.FECHA_EX THEN
CALL XDiario_checkDate(NEW.FECHA_EX);
END IF;
IF NOT NEW.FECHA_OP <=> OLD.FECHA_OP THEN
CALL XDiario_checkDate(NEW.FECHA_OP);
END IF;
IF NOT NEW.FECHA_RT <=> OLD.FECHA_RT THEN
CALL XDiario_checkDate(NEW.FECHA_RT);
END IF;
IF NOT NEW.FECREGCON <=> OLD.FECREGCON THEN
CALL XDiario_checkDate(NEW.FECREGCON);
END IF;
END$$
DELIMITER ;
DROP TRIGGER IF EXISTS vn.XDiario_beforeInsert;
USE vn;
DELIMITER $$
$$
CREATE DEFINER=`root`@`localhost` TRIGGER `vn`.`XDiario_beforeInsert`
BEFORE INSERT ON `XDiario`
FOR EACH ROW
BEGIN
IF NOT util.checkLength(NEW.SUBCTA, 10) THEN
CALL util.throw('INVALID_LENGTH');
END IF;
IF NOT util.checkLength(NEW.CONTRA, 10) THEN
CALL util.throw('INVALID_LENGTH');
END IF;
CALL XDiario_checkDate(NEW.FECHA);
CALL XDiario_checkDate(NEW.FECHA_EX);
CALL XDiario_checkDate(NEW.FECHA_OP);
CALL XDiario_checkDate(NEW.FECHA_RT);
CALL XDiario_checkDate(NEW.FECREGCON);
END$$
DELIMITER ;
DROP FUNCTION IF EXISTS `util`.`checkLength`;
DELIMITER $$
$$
CREATE DEFINER=`root`@`localhost` FUNCTION `util`.`checkLength`(vString VARCHAR(10), vLength INT(11)) RETURNS tinyint(1)
DETERMINISTIC
BEGIN
/**
* Comprueba la longitud de un string
*
* @param vString String a comprobar
* @param vLength Longitud que debe tener
* @return Devuelve TRUE/FALSE en caso de que tenga la longitud correcta o no
*/
IF LENGTH(vString) <=> vLength THEN
RETURN TRUE;
END IF;
RETURN FALSE;
END$$
DELIMITER ;