La instrucción INSERT entra en conflicto con la restricción FOREIGN KEY

Estoy teniendo el siguiente error. ¿Me podría ayudar?

Msg 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 database "dev_bo", tabla "dbo.Sup_Item_Cat". La instrucción se ha terminado.

Código:

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_id está causando el error. Traté de poner el valor que ya existe en el dbo.Sup_Item_Cat en la columna, que corresponde al sup_item … pero no la alegría 🙁

En su tabla dbo.Sup_Item_Cat , tiene una reference de key 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 la key principal de la tabla a la que se hace reference.

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 la tabla hace reference. Estás insertando algunos datos malos.

¡Avíseme si necesita algo más explicado!

Tuve este problema yo mismo, en relación con el post de error que se recibe tratando de rellenar un campo de key externa. Terminé en esta página con la esperanza de encontrar la respuesta. La respuesta comprobada en esta página es la correcta, lamentablemente siento que la respuesta es un poco incompleta para las personas que no están tan familiarizadas con SQL. Soy bastante apto para escribir código, pero las consultas SQL son nuevas para mí, así como para build tablas de bases de datos.

A pesar de que la respuesta verificada es correcta:

Mike M escribió-

"La forma en que funciona un FK es que no puede tener un valor en esa columna que no se encuentre también en la columna de la key principal de la tabla a la que se hace reference".

Lo que falta de esta respuesta es simple;

Primero debe comstackr la tabla que contiene la key principal.

Otra forma de decirlo es;

Debe insert datos en la tabla primaria, que contiene la key principal, antes de intentar insert datos en la tabla secundaria que contiene la key externa.

En resumen, muchos de los tutoriales parecen estar ocultos sobre este hecho, de modo que si intentara por su count y no se diera count de que había un order de operaciones, entonces obtendría este error. Naturalmente, después de agregar los datos de la key primaria, los datos de la key externa en la tabla secundaria deben ajustarse al campo de la key principal en la tabla padre; de ​​lo contrario, seguirá recibiendo este error.

Si alguien lee hasta aquí. Espero que esto haya ayudado a que la respuesta comprobada sea más clara. Sé que hay algunos de ustedes que pueden sentir que este tipo de cosas es bastante directa y que abrir un libro habría respondido a esta pregunta antes de su publicación, pero la verdad es que no todos aprenden de la misma manera.

Deberá publicar su statement para get más aclaraciones. Pero…

Ese error significa que la tabla en la que está insertando datos tiene una relación de key externa con otra tabla. Antes de que se puedan insert datos, el valor en el campo de la key externa debe existir primero en la otra tabla.

Está intentando insert un logging con un valor en la columna de key externa que no existe en la tabla externa.

Por ejemplo: si tiene tablas de libros y autores donde Books tiene una restricción de key externa en la tabla de autores e intenta insert un logging de libro para el que no hay logging de autor.

Por cierto, una simple búsqueda en Google le hubiera dado la respuesta …

El problema no está en client_id por lo que puedo ver. Parece 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 key externa FK_Sup_Item_Sup_Item_Cat para confirmar qué columna es el problema real, pero estoy bastante seguro de que no es la que está tratando de corregir. Además '123123' parece sospechoso también.

Algo que encontré fue que todos los campos tienen que coincidir EXACTAMENTE.

Por ejemplo, enviar 'cat dog' no es lo mismo que enviar 'catdog'.

Lo que hice para solucionar esto fue escribir el código FK de la tabla en la que estaba insertando los datos, tomar nota de la "Clave Extranjera" que tenía las restricciones (en mi caso había 2) y asegurarme de que esos 2 campos coinciden con los valores EXACTAMENTE como estaban en la table que arrojaba el error de Constricción FK.

Una vez que arreglé los 2 campos que daban mis problemas, la vida era buena.

Si necesitas una mejor explicación, házmelo saber.

Significa exactamente lo que dice. Está intentando insert un valor en una columna que tiene una restricción FK que no coincide con ningún valor en la tabla de búsqueda.

Verifique dos veces los campos en la relación para la cual se define la key foránea. Es posible que SQL Server Management Studio no haya tenido los campos que quería seleccionados cuando definió la relación. Esto me ha quemado en el pasado.

Los datos de tabla padre no existen, por lo que causa el problema. Para el problema anterior, los datos no están disponibles en la tabla dbo.Sup_Item_Cat "

La falta de datos de la tabla padre causa el problema. En su problema, la falta de disponibilidad de datos en "dbo.Sup_Item_Cat" causa el problema

  1. ejecutar sp_helpconstraint
  2. prestar ATENCIÓN a la columna constraint_keys devuelta para la key externa

Tuve el mismo problema cuando utilicé las migraciones de primer código para build mi database para una aplicación MVC 5. Eventualmente encontré el método seed en mi file configuration.cs para estar causando el problema. Mi método de initialization creaba una input de tabla para la tabla que contenía la key externa antes de crear la input con la key primaria correspondiente.

Me encontré con este problema cuando mis campos de valor de inserción contenían tabs y espacios que no eran evidentes a simple vista. Creé mi list de valores en Excel, la copié y la pegué en SQL, y realicé consultas para encontrar coincidencias en mis campos FK.

Las consultas de coincidencia no detectaron tabs y espacios en mi campo FK, pero el INSERT los reconoció y continuó generando el error.

Probé nuevamente copyndo el contenido del campo FK en un logging y pegándolo en la consulta de inserción. Cuando ese logging también falló, miré más de cerca los datos y finalmente detecté las tabs / espacios.

Una vez que limpié las tabs / espacios eliminados, mi problema se resolvió. ¡Espero que esto ayude a alguien!