A ver si alguien puede ayudarme con mi primer trigger en mysql:
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:
delimiter |
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 version de mi server es 5.0.37
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:
delimiter |
create trigger TBIVentas BEFORE INSERT on ventas
for each row
begin
declare pepito integer;
Set pepito=`New`.`NumEncargo`;
end;
|
delimiter ;
Parece que el problema viene por usar la NEW dentro de la select...
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 ;