Hola a todos.
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:
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;//
De antemano, muchas gracias y saludos.
Martin Raygoza "Ban Scorpio"