Ver Mensaje Individual
  #4 (permalink)  
Antiguo 08/03/2012, 16:55
sergiolpm
 
Fecha de Ingreso: marzo-2012
Mensajes: 16
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema con claves foráneas

Hola de nuevo:
Sigo con problemas con las claves foráneas y la insercion de datos:
quiero insertar unos datos de un libro, asi como su isbn,titulo,tema,etc en una tabla llamada ejemplares:

//tabla ejemplares
$ejemplar="CREATE TABLE ejemplares(
isbn varchar(17),
ejemplar varchar(3),
titulo varchar(50),
autor varchar(40),
tema varchar(40),
cdu varchar(20),
nom_editorial varchar(40),
pasillo varchar(1),
estanteria varchar(2),
constraint primary key(isbn,ejemplar),
constraint foreign key(isbn) references libros(isbn) on delete cascade on update cascade,
constraint foreign key(pasillo,estanteria) references ubicacion(pasillo,estanteria) on delete cascade on update cascade);";

mysql_query($ejemplar,$link) or die(mysql_error());



la tabla ejemplares esta conectada por el isbn por la clave foranea con la tabla libros:

//tabla libros
$libro="CREATE TABLE libros(
isbn varchar(17),
titulo varchar(50),
autor varchar(40),
tema varchar(40),
cdu varchar(20),
nom_editorial varchar(40),
constraint primary key(isbn),
constraint fknombreditorial foreign key(nom_editorial) references editoriales(nom_editorial) on delete cascade on update cascade);";

mysql_query($libro,$link) or die(mysql_error());

cabe decir que la tabla libros esta puesta para que se cree antes que la tabla ejemplares. ahora, al insertar el codigo para insertar el libro:
$link=mysql_connect("localhost","genius","genius") ;
mysql_select_db("proyecto",$link);
$isbn=$_REQUEST[isbn];
$ejemplar=$_REQUEST[ejemplar];
$titulo=$_REQUEST[titulo];
$tema=$_REQUEST[tema];
$autor=$_REQUEST[autor];
$cdu=$_REQUEST[cdu];
$editorial=$_REQUEST[editorial];
$pasillo=$_REQUEST[pasillo];
$estanteria=$_REQUEST[estanteria];
$resultado=mysql_query("SELECT * FROM ejemplares WHERE isbn='$isbn' AND ejemplar='$ejemplar'",$link) or die(mysql_error());

if(mysql_num_rows($resultado)!=0){
echo "<script language='javascript'>alert('EL ISBN y ejemplar introducido ya existe')</script>";
}

else{


$agregarejemplar="INSERT INTO ejemplares(isbn,ejemplar,titulo,autor,tema,cdu,nom _editorial,pasillo,estanteria)
VALUES('$isbn','$ejemplar','$titulo','$autor','$te ma','$cdu','$editorial','$pasillo','$estanteria')" ;
mysql_query($agregarejemplar,$link) or die(mysql_error());
echo "<script language='javascript'>alert('Libro introducido correctamente')</script>";
}



aqui me da el error Cannot add or update a child row: a foreign key constraint fails (`proyecto`.`ejemplares`, CONSTRAINT `ejemplares_ibfk_1` FOREIGN KEY (`isbn`) REFERENCES `libros` (`isbn`) ON DELETE CASCADE ON UPDATE CASCADE)



puf esto es desesperante necesito algo de ayuda, gracias