He revisado la sintaxis y por mas vueltas que le doy todo parece correcto pero el servidor me suelta que la "pseudo-variable" NEW no está declarada:
El script es el siguiente
Código:
La version de mi server es 5.0.37delimiter | create trigger TBIVentas BEFORE INSERT on ventas for each row begin Set New.NumEncargo=0; select Max(ifnull(NumEncargo,0))+1 into NEW.NumEncargo from ventas where fechaencargo=NEW.FechaEncargo; end; | delimiter ;
La tabla es InnoDB
Privilegios de root en localhost
Y el error es "ERROR 1327 (42000): Undeclared variable: NEW"
AH! Y este codigo si me lo acepta:
Código:
Parece que el problema viene por usar la NEW dentro de la select... delimiter | create trigger TBIVentas BEFORE INSERT on ventas for each row begin declare pepito integer; Set pepito=`New`.`NumEncargo`; end; | delimiter ;
A ver si alguien me explica que es lo que está mal...
Al final encontré una alternativa:
Código:
delimiter | create definer=`root`@`localhost` trigger `TBIVentas` BEFORE INSERT on `ventas` for each row begin declare pepito integer; Set pepito=0; select Max(ifnull(`NumEncargo`,0))+1 into pepito from `ventas` where `ventas`.`fechaencargo`=`NEW`.`FechaEncargo`; set NEW.NumEncargo=pepito; end; | delimiter ;