Asunto: Re: Error 1216 MySQL al guardar foreign key constraint fail
Anuncios
La consulta SQL que intentas ejecutar incumple las reglas de integridad referencial establecidas en la creación de las tablas implicadas. Es decir, no puedes eliminar o insertar un registro en una tabla si ésta tiene una regla de integridad referencial que lo impida si no cumple las condiciones.
Pongamos un ejemplo para entenderlo mejor:
Si creamos estas dos tablas (una relacionada con la otra por una CONSTRAINT):
Código:
create table formapago
(
codigo varchar(6) primary key,
nombre varchar(30) not null
)
creándolas en este orden, pues la creación de la tabla "cliente" necesita que exista la tabla "formapago".
Y añadimos algún registro a la tabla cliente con:
Código:
insert into cliente value ('000001', 'Cliente de pruebas', null)
no habría problema, pero si lo añadimos con un valor en "codigoformapago":
Código:
insert into cliente value ('000001', 'Cliente de pruebas', '000001')
dará el error:
SQL Error: Cannot add or update a child row: a foreign key constraint fails.
este error es debido a que no existe ningún registro en la tabla "formapago" con código "000001", pues la CONSTRAINT "cf_cliente_formapago" no permite que se cree un registro en la tabla "cliente" con valor en "codigoformapago" inexistente en la tabla "formapago".
Si creamos un registro en "formapago" con código "000001":
Código:
insert into formapago value ('000001', 'Contado')
sí que permitiría ejecutar la consulta:
Código:
insert into cliente value ('000001', 'Cliente de pruebas', '000001')
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A