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

que me falla?

Estas en el tema de que me falla? en el foro de Mysql en Foros del Web. hola, os comento mi problema. tengo que entregar un proyecto de una base de datos y tiene que ir acotado con triggers. el proyecto es ...
  #1 (permalink)  
Antiguo 11/03/2010, 05:44
 
Fecha de Ingreso: marzo-2010
Mensajes: 2
Antigüedad: 14 años, 1 mes
Puntos: 0
que me falla?

hola, os comento mi problema. tengo que entregar un proyecto de una base de datos y tiene que ir acotado con triggers. el proyecto es sobre una comisaria.
esta tiene a delincuentes en calabozos y quiero que haya un maximo de 4 delincuentes por calabozo. si hubira mas que sacase un mensaje por pantalla diciendo que no puede insertar porque ese calabozo esta lleno. tengo el codigo asi:


delimiter |

CREATE TRIGGER d_indel BEFORE INSERT ON delincuente
FOR EACH ROW BEGIN
declare dni char(9);
declare contador int;
declare cantidad int;
declare calabozo char(5);
declare contadorcalabozo int;

#Comprobamos el dni del delincuente y lo almacenamos
set dni = (new.dni_delincuente);

#Comprobamos el codigo de calabozo y lo almacenamos
set calabozo = (new.cod_calabozo);

#Comprobamos el numero de delincuentes del calabozo donde lo queremos meter
set contadorcalabozo = (select count(*) from delincuente where cod_calabozo = calabozo);

#Comprobamos si el dni del delincuente existe en la tabla historico_delincuentes
set contador =(SELECT count(*) FROM historico_delincuentes where dni_delincuente = dni);

#Si hay 4 o mas deteneidos en el calabozo selecionado no se puede insertar mas.
if (contadorcalabozo >=4) then

call p_mensaje_error();

#si hay menos de 4 en ese calabozo comprobamos si existe en la base de historicos
#si no existe se inserta con un contador inicializado a 1.
elseif (contadorcalabozo < 4) and (contador = 0)then

set contador = 1;
insert into historico_delincuentes values(dni,contador);

#si existe actualizamos el contador con una detencion mas
elseif(contador!=0) then

set contador = (select NUM_DETENCIONES from historico_delincuentes where dni_delincuente = dni);
set contador = (contador + 1);

update historico_delincuentes
set NUM_DETENCIONES = contador
where dni_delincuente =dni;
end if;
END;

| delimiter ;

#en la llamada al procedimiento es donde me falla, ya sea haciendo una select de una variable o llamando al un procedimiento.

Alguien me puede echar una manilla?

Etiquetas: falla
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 13:42.