La declaración INSERT entró en conflicto con la restricción FOREIGN KEY - SQL Server

Resuelto SmartestVEGA asked hace 14 años • 13 respuestas

Mensaje 547, nivel 16, estado 0, línea 1
La instrucción INSERT entró en conflicto con la restricción FOREIGN KEY "FK_Sup_Item_Sup_Item_Cat". El conflicto ocurrió en la base de datos "dev_bo", tabla "dbo.Sup_Item_Cat". La instrucción se ha terminado.

insert into sup_item (supplier_id, sup_item_id, name, sup_item_cat_id, 
                      status_code, last_modified_user_id, last_modified_timestamp, client_id)   
values (10162425, 10, 'jaiso', '123123',
        'a', '12', '2010-12-12', '1062425')

La última columna client_idestá causando el error. Intenté poner el valor que ya existe en la dbo.Sup_Item_Catcolumna correspondiente al sup_item.

SmartestVEGA avatar Jun 03 '10 19:06 SmartestVEGA
Aceptado

Su tabla dbo.Sup_Item_Cattiene una referencia de clave externa a otra tabla. La forma en que funciona un FK es que no puede tener un valor en esa columna que no esté también en la columna de clave principal de la tabla a la que se hace referencia.

Si tiene SQL Server Management Studio, ábralo y sp_help" dbo.Sup_Item_Cat". Vea en qué columna está FK y a qué columna de qué tabla hace referencia. Estás insertando algunos datos incorrectos.

Mike M. avatar Jun 03 '2010 12:06 Mike M.

La respuesta en esta página de Mike M. es correcta:

La forma en que funciona un FK es que no puede tener un valor en esa columna que no esté también en la columna de clave principal de la tabla a la que se hace referencia.

Lo que falta en esa respuesta es: primero debe crear la tabla que contiene la clave principal.

Debe insertar datos en la tabla principal, que contiene la clave principal, antes de intentar insertar datos en la clave externa.

Después de agregar los datos de la clave principal, los datos de su clave externa en la tabla secundaria deben ajustarse al campo de clave principal en la tabla principal.

plasmasnakeneo avatar Jan 17 '2014 20:01 plasmasnakeneo

Está intentando insertar un registro con un valor en la columna de clave externa que no existe en la tabla externa.

Por ejemplo: si tiene tablas de Libros y Autores donde Libros tiene una restricción de clave externa en la tabla de Autores e intenta insertar un registro de libro para el cual no hay ningún registro de autor.

Matthew Smith avatar Jun 03 '2010 12:06 Matthew Smith

Ese error significa que la tabla en la que está insertando datos tiene una relación de clave externa con otra tabla. Antes de poder insertar datos, el valor del campo de clave externa debe existir primero en la otra tabla.

Justin Niessner avatar Jun 03 '2010 12:06 Justin Niessner

El problema no es con client_id por lo que puedo ver. Parece más bien que el problema está en la cuarta columna, sup_item_cat_id

Yo correría

sp_helpconstraint sup_item

y preste atención a la columna constraint_keys devuelta para la clave externa FK_Sup_Item_Sup_Item_Cat para confirmar qué columna es el problema real, pero estoy bastante seguro de que no es el que está intentando solucionar. Además, '123123' también parece sospechoso.

Cobusve avatar Jun 03 '2010 12:06 Cobusve