restricción instrucción information foreign conflicto con additional sql sql-server sql-server-2005 foreign-keys

information - Instrucción INSERT en conflicto con la restricción FOREIGN KEY-SQL Server



instrucción alter table en conflicto con la restricción foreign key (13)

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 base de datos "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 :-(


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

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 eran 2) y asegurarme de que esos 2 campos coinciden con los valores EXACTAMENTE como estaban en la mesa 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.


Deberá publicar su declaración para obtener más aclaraciones. Pero...

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


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 clave 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.


En su tabla dbo.Sup_Item_Cat , tiene 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 la 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 la tabla hace referencia. Estás insertando algunos datos malos.

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


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 Books tiene una restricción de clave externa en la tabla de autores e intenta insertar un registro de libro para el que no hay registro de autor.

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


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


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 "


Me encontré con este problema cuando mis campos de valor de inserción contenían pestañas y espacios que no eran evidentes a simple vista. Creé mi lista 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 pestañas y espacios en mi campo FK, pero el INSERT los reconoció y continuó generando el error.

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

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


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


Tuve el mismo problema cuando utilicé las migraciones de primer código para construir mi base de datos para una aplicación MVC 5. Eventualmente encontré el método seed en mi archivo configuration.cs para estar causando el problema. Mi método de inicialización creaba una entrada de tabla para la tabla que contenía la clave externa antes de crear la entrada con la clave primaria correspondiente.


Tuve este problema yo mismo, en relación con el mensaje de error que se recibe tratando de rellenar un campo de clave 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 construir 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 clave principal de la tabla a la que se hace referencia".

Lo que falta de esta respuesta es simple;

Primero debe compilar la tabla que contiene la clave principal.

Otra forma de decirlo es;

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

En resumen, muchos de los tutoriales parecen estar ocultos sobre este hecho, de modo que si intentara por su cuenta y no se diera cuenta de que había un orden de operaciones, entonces obtendría este error. Naturalmente, después de agregar los datos de la clave primaria, los datos de la clave externa en la tabla secundaria deben ajustarse al campo de la clave 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.


Verifique dos veces los campos en la relación para la cual se define la clave 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.