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

Error: Duplicate entry ?

Estas en el tema de Error: Duplicate entry ? en el foro de Mysql en Foros del Web. Hola ! Sigo intentando aprender... y ya voy llegando a los procedimientos almacenados !! :)) Tengo un inconveniente, que paso a exponer. Situacion: Tabla titles ...
  #1 (permalink)  
Antiguo 17/10/2005, 20:59
 
Fecha de Ingreso: octubre-2005
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
Error: Duplicate entry ?

Hola !

Sigo intentando aprender... y ya voy llegando a los procedimientos almacenados !! :))
Tengo un inconveniente, que paso a exponer.

Situacion:
Tabla titles con las columnas: Title_id, Title, Type, pub_id, price, pubdate
Tabla Publishers con las columnas: Pub_id, Pub_name
Tabla titleauthor con las columnas: au_id, title_id
El procedimiento que hice es el siguiente:

create procedure sp_insercion_relacionada (in IdLibro varchar(6), in titulo varchar(12), in tipo char(12), in precio decimal(19,4), in fecha_publi datetime, in nombre_autor varchar(40), in apellido_autor varchar(20), in editorial varchar(40))
Begin
Declare IDPub char(4);
Declare IdAutor varchar(11);
Select pub_ID into IDPub From publishers Where pub_name=editorial;
Insert into titles(title_id,title,type,Pub_id ,price,pubdate) values(IdLibro,titulo,tipo,IDPub,precio,fecha_publ i);
Select au_id into IdAutor from authors where (au_lname=apellido_autor) AND (au_fname=nombre_autor);
Insert into titleauthor(au_id,title_id) values(IdAutor,IdLibro);
End;
Luego de ejecutarlo con los siguientes datos:
Call sp_insercion_relacionada("N321","An Introduction to Tivoli Enterprise","Networks",325.40,19991020, "Marjorie","Green","GGG&G")
Obtengo el siguiente error: Duplicate entry 'N321' for key 1

Además, solo se hace el primer Insert (en titles) pero no el segundo (a titleauthor).
No tengo entradas duplicadas, así es que no entiendo que es lo que motiva el error.

Alguien podría ser tan amable de marcarme el camino ? Sinceramente ya llevo algunas horas buscándole la vuelta y no lo consigo...
Gracias desde ya por vuestra atención.
  #2 (permalink)  
Antiguo 18/10/2005, 02:07
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
¿Es IdLibro identificador de titles?
Si es así, no existirá ya N321???

Que no se inserte en titleauthor es normal, puesto que la ejecución se detiene, con el primer fallo.
  #3 (permalink)  
Antiguo 18/10/2005, 05:48
 
Fecha de Ingreso: octubre-2005
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
Si José, ese es el identificador... pero no existe otro libro con ese identificador... Tengo pocos datos cargados, menos de 10, y ninguno es igual...
Ya estoy volviendome loco par entender ese error
  #4 (permalink)  
Antiguo 18/10/2005, 06:45
 
Fecha de Ingreso: octubre-2005
Mensajes: 3
Antigüedad: 18 años, 6 meses
Puntos: 0
Lo solucione !

Aun no me explico el motivo, pero lo solucione cambiando de orden los dos Select... Es decir, puse los dos select juntos y luego los dos insert juntos.

Quedandome ahora asi, funciona sin ningun errror:

create procedure sp_insercion_relacionada (in IdLibro varchar(6), in titulo varchar(12), in tipo char(12), in precio decimal(19,4), in fecha_publi datetime, in nombre_autor varchar(40), in apellido_autor varchar(20), in editorial varchar(40))
Begin
Declare IDPub char(4);
Declare IdAutor varchar(11);
Select pub_ID into IDPub From publishers Where pub_name=editorial;
Select au_id into IdAutor from authors where (au_lname=apellido_autor) AND (au_fname=nombre_autor);
Insert into titles(title_id,title,type,Pub_id ,price,pubdate) values(IdLibro,titulo,tipo,IDPub,precio,fecha_publ i);
Insert into titleauthor(au_id,title_id) values(IdAutor,IdLibro);
End;
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 05:38.