 
			
				11/03/2010, 05:44
			
			
			     |  
      |    |    |    Fecha de Ingreso: marzo-2010  
						Mensajes: 2
					  Antigüedad: 15 años, 7 meses 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?           |