refs #4951 triggers modified
gitea/salix/pipeline/head This commit looks good Details

This commit is contained in:
Alexandre Riera 2023-01-04 10:37:59 +01:00
parent f499311a16
commit a4e591c5f5
1 changed files with 23 additions and 14 deletions

View File

@ -8,13 +8,19 @@ CREATE DEFINER=`root`@`localhost` TRIGGER `vn`.`XDiario_beforeUpdate`
FOR EACH ROW
BEGIN
IF NOT NEW.SUBCTA <=> OLD.SUBCTA THEN
IF NOT util.checkLength(NEW.SUBCTA, 10) THEN
CALL util.throw('INVALID_LENGTH');
IF NEW.SUBCTA <=> '' THEN
SET NEW.SUBCTA = NULL;
END IF;
IF NEW.SUBCTA IS NOT NULL AND NOT util.checkStringLength(NEW.SUBCTA, 10) THEN
CALL util.throw('INVALID_STRING_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');
IF NEW.CONTRA <=> '' THEN
SET NEW.CONTRA = NULL;
END IF;
IF NEW.CONTRA IS NOT NULL AND NOT util.checkStringLength(NEW.CONTRA, 10) THEN
CALL util.throw('INVALID_STRING_LENGTH');
END IF;
END IF;
IF NOT NEW.FECHA <=> OLD.FECHA THEN
@ -45,11 +51,17 @@ 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');
IF NEW.SUBCTA <=> '' THEN
SET NEW.SUBCTA = NULL;
END IF;
IF NOT util.checkLength(NEW.CONTRA, 10) THEN
CALL util.throw('INVALID_LENGTH');
IF NEW.SUBCTA IS NOT NULL AND NOT util.checkStringLength(NEW.SUBCTA, 10) THEN
CALL util.throw('INVALID_STRING_LENGTH');
END IF;
IF NEW.CONTRA <=> '' THEN
SET NEW.CONTRA = NULL;
END IF;
IF NEW.CONTRA IS NOT NULL AND NOT util.checkStringLength(NEW.CONTRA, 10) THEN
CALL util.throw('INVALID_STRING_LENGTH');
END IF;
CALL XDiario_checkDate(NEW.FECHA);
CALL XDiario_checkDate(NEW.FECHA_EX);
@ -60,11 +72,11 @@ END$$
DELIMITER ;
DROP FUNCTION IF EXISTS `util`.`checkLength`;
DROP FUNCTION IF EXISTS `util`.`checkStringLength`;
DELIMITER $$
$$
CREATE DEFINER=`root`@`localhost` FUNCTION `util`.`checkLength`(vString VARCHAR(10), vLength INT(11)) RETURNS tinyint(1)
CREATE DEFINER=`root`@`localhost` FUNCTION `util`.`checkStringLength`(vString VARCHAR(255), vLength INT(3)) RETURNS tinyint(1)
DETERMINISTIC
BEGIN
/**
@ -74,10 +86,7 @@ BEGIN
* @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;
RETURN LENGTH(vString) <=> vLength;
END$$
DELIMITER ;