Muy buenas noches, mi nombre es Martin Raygoza y soy nuevo por aqui.
El motivo de escribir y pedir la yauda de todo quien desee ayudarme, es por estoy trabajando con MySQL y tengo una base de datos llamada biblioteca que posee un procedimiento en el cual al hacer un prestamo, el estatus se cambie a prestado y devuelto, dependiendo el caso; y un disparador, en el cual al hacer el prestamo y el estado sea "prestado" le existencia de los libros disminuya en 1 y si es "devuelto", se aumente en 1.
El problema es que al llamar al procedimiento despues de haber ingresado el disparador, me marca el error del titulo, pero de la siguiente manera:
mysql> call presl(123,124,107,'24/sep/2010','Prestado');
ERROR 1305 (42000): FUNCTION biblioteca.existencia does not exist
¿Alguien podria ayudarme?
De antemano, gracias.
Postdata
Dejo una copia del script realizado.
Código:
De antemano, muchas gracias y saludos.create database Biblioteca; /* Se crea la base de datos */ use Biblioteca; /*Se activa la base de datos*/ create table Libro /* Se crea una tabla con el nombre de libros */ (isbn int not null, titulo varchar(15) not null, autor varchar(15) not null, editorial varchar(15) not null, existencia int not null, constraint pk_libro primary key (isbn)); create table Lector /* Se crea una tabla con el nombre de Lector */ (codigo int not null, nombre varchar(25) not null, direccion varchar(30) not null, telefono varchar(15) not null, constraint pk_lector primary key (codigo)); create table Prestamo /* Se crea una tabla con el nombre de Prestamo */ (codigolector int not null, isbnlibro int not null, numprest int not null, fecha varchar (10) not null, estado varchar(10) not null, constraint fk_codi foreign key (codigolector) references lector(codigo), constraint fk_sbn foreign key (isbnlibro) references libro(isbn), constraint pk_prestamo primary key (numprest)); insert into Libro /* Se insertan los datos de la tabla Libro */ values(124,'100 años de soledad','G. G. Marquez','McGraw-Hill',2558); insert into Lector /* Se insertan los datos de la tabla Lector */ values(123,'Martin de Jesus Raygoza','San Ramon #28','331-249-8702'); delimiter // create procedure presl (codlector int, numlibro int,np int, fech varchar (15), estatus varchar (15)) begin if exists(select* from lector where codigo=codlector) and exists(select* from libro where isbn=numlibro) then begin if not exists(select* from prestamo where np=numprest)then begin insert prestamo values(codlector,numlibro,np,fech,estatus); select 'Prestamo Realizado con exito'Aviso; end; else begin update prestamo set estado=estatus where codigolector=codlector and isbnlibro=numlibro and np=numprest and estado='Prestado'; select 'EL Libro se ha devuelto' AVISO; end; end if; end; else select'No Exite Libro o Lector'Aviso; end if; end;// create trigger cambio after insert on prestamo for each row begin if(new.estado='prestado') then update libro set existencia=existencia(-1); elseif update libro set existencia=existencia(+1); end if; end;//
Martin Raygoza "Ban Scorpio"