Estoy teniendo el siguiente error. ¿Me podría ayudar?
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.
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 dbo.Sup_Item_Cat
la columna, correspondiente al sup_item .. pero no es alegría :-(
sql
sql-server
sql-server-2005
foreign-keys
SmartestVEGA
fuente
fuente
Sup_Item_Cat
tabla. No hay mucho más que decir al respecto.SELECT * FROM Sup_Item_Cat WHERE sup_item_cat_id = '123123'
devuelve resultados?Respuestas:
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 clave principal de la tabla referenciada.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.¡Avísame si necesitas algo mejor explicado!
fuente
Tuve este problema yo mismo, con respecto al mensaje de error que se recibe al intentar completar un campo de clave externa. Terminé en esta página con la esperanza de encontrar la respuesta. La respuesta marcada en esta página es de hecho la correcta, desafortunadamente 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 marcada es correcta:
Lo que falta en esta respuesta es simplemente;
Otra forma de decirlo es;
En resumen, muchos de los tutoriales parecen estar desconcertando este hecho, por lo que si tuviera que intentarlo por su cuenta y no se diera cuenta de que había un orden de operaciones, 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 primaria en la tabla primaria; de lo contrario, aún recibirá este error.
Si alguien lee hasta aquí. Espero que esto haya ayudado a aclarar la respuesta marcada. Sé que hay algunos de ustedes que pueden sentir que este tipo de cosas es bastante sencillo y que abrir un libro habría respondido esta pregunta antes de que se publicara, pero la verdad es que no todos aprenden de la misma manera.
fuente
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 foránea en la tabla de Autores e intenta insertar un registro de libro para el que no hay registro de autor.
fuente
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 poder insertar datos, el valor en el campo de clave externa debe existir primero en la otra tabla.
fuente
El problema no es con client_id por lo que puedo ver. Parece que el problema está en la cuarta columna, sup_item_cat_id
Yo correría
y preste atención a la columna restricint_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 solucionar. Además '123123' parece sospechoso también.
fuente
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 este problema fue escribir el código FK de la tabla en la que estaba insertando los datos, tomar nota de la "Clave externa" que tenía las restricciones (en mi caso había 2) y asegurarse de que esos 2 valores de campo coincidieran EXACTAMENTE ya que estaban en la tabla que arrojaba el error de restricción FK.
Una vez que arreglé los 2 campos que daban mis problemas, ¡la vida fue buena!
Si necesita una mejor explicación, hágamelo saber.
fuente
También obtuve el mismo error en mi código SQL, esta solución funciona para mí,
Verifique los datos en la tabla primaria. Puede estar ingresando un valor de columna que no está presente en la columna de clave primaria.
fuente
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.
fuente
Verifique los campos en la relación para la que se define la clave externa. SQL Server Management Studio puede no haber seleccionado los campos que deseaba cuando definió la relación. Esto me ha quemado en el pasado.
fuente
fuente
Faltan datos de la tabla principal que causan el problema. En su problema, la falta de disponibilidad de datos en "dbo.Sup_Item_Cat" causa el problema
fuente
Tuve el mismo problema cuando utilicé migraciones de código primero para construir mi base de datos para una aplicación MVC 5. Finalmente encontré que el método de inicialización en mi archivo configuration.cs está causando el problema. Mi método de inicialización era crear una entrada de tabla para la tabla que contenía la clave externa antes de crear la entrada con la clave primaria coincidente.
fuente
Me encontré con este problema cuando mis campos de valor de inserción contenían pestañas y espacios que no eran obvios a simple vista. Creé mi lista de valores en Excel, la copié y la pegué en SQL, y ejecuté consultas para encontrar no coincidencias en mis campos FK.
Las consultas de coincidencia no detectaron que hubiera pestañas y espacios en mi campo FK, pero 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!
fuente