Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

En un Trigger Variable NEW sin declarar

Estas en el tema de En un Trigger Variable NEW sin declarar en el foro de Mysql en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 28/05/2007, 08:54
 
Fecha de Ingreso: agosto-2004
Mensajes: 62
Antigüedad: 19 años, 7 meses
Puntos: 2
En un Trigger Variable NEW sin declarar

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 ;

Última edición por Kelbethor; 28/05/2007 a las 09:13 Razón: Me las apañe, pero no lo entiendo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:49.