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

Ayuda con Triggers, por favor.!!!!

Estas en el tema de Ayuda con Triggers, por favor.!!!! en el foro de Mysql en Foros del Web. hola comunidad en esta oportunidad recurro a uds con el fin de que me ayuden en mis comiensos en la utilizacion de bases de datos. ...
  #1 (permalink)  
Antiguo 25/01/2008, 14:19
 
Fecha de Ingreso: abril-2007
Mensajes: 156
Antigüedad: 17 años
Puntos: 3
Ayuda con Triggers, por favor.!!!!

hola comunidad en esta oportunidad recurro a uds con el fin de que me ayuden en mis comiensos en la utilizacion de bases de datos.

esta es la primera vez que intento hacer un trigger pero no e sido capaz. el triggers consiste en que Antes de la insercion de una determinada tabla este escoja con una sentencia select el codigo mayor y le sume uno e inserte ese codigo en ese insert.

En pocas palabras es hacer el Autoincremento del codigo en la insercion.
No se si se peuden utilizar las variables como yo las utilizo en este ejercicio.

este es el codigo que tengo.

create trigger Actualizacion_Id Before Insert On Genero
For EACH ROW
Begin

SET @Cont= (SELECT MAX(CODGENERO) FROM GENERO);
SET @Cod= @Cont + 1;
INSERT INTO GENERO (CODGENERO,DESCRIPCION)
VALUES (@Cod ,'Hola');

End;


De antemano muchissisisismas gracias por su colaboraciojn.
  #2 (permalink)  
Antiguo 26/01/2008, 11:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Re: Ayuda con Triggers, por favor.!!!!

Cita:
CREATE TRIGGER Actualizacion_Id BEFORE INSERT ON GENERO
FOR EACH ROW
BEGIN

DECLARE @CONT;
SET @Cont= (SELECT MAX(CODGENERO) FROM GENERO);
IF @CONT IS NULL THEN
SET @CONT=1;
ELSE
SET @Cod = @Cont + 1;
END IF;
SET NEW.CODGENERO=@COD;

END;

No has considerado la posibilidad de que la tabla esté vacía. Eso te devolvería NULL y todo NULL al que se suma un valor resulta igual a NULL.
Por otro lado NEW.campo es la referencia al nuevo registro que se está insertando. El trigger tal y como lo estás construyendo entraría en un loop infinito, porque al final estas haciendo un INSERT que vuelve a llamar al trigger y así sucesivamente.
Además, la variable @Cont no estaba definida.
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 01:05.