Je reçois l'erreur suivante. Pourrais-tu m'aider s'il te plaît?
Msg 547, niveau 16, état 0, ligne 1
L'instruction INSERT était en conflit avec la contrainte FOREIGN KEY "FK_Sup_Item_Sup_Item_Cat". Le conflit s'est produit dans la base de données "dev_bo", table "dbo.Sup_Item_Cat". La déclaration est terminée.
Code:
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 dernière colonne client_id
est à l'origine de l'erreur. J'ai essayé de mettre la valeur qui existe déjà dans le dbo.Sup_Item_Cat
dans la colonne, correspondant au sup_item .. mais pas de joie :-(
sql
sql-server
sql-server-2005
foreign-keys
SmartestVEGA
la source
la source
Sup_Item_Cat
table. Pas grand chose d'autre à dire à ce sujet.SELECT * FROM Sup_Item_Cat WHERE sup_item_cat_id = '123123'
donne des résultats?Réponses:
Dans votre table
dbo.Sup_Item_Cat
, il a une référence de clé étrangère vers une autre table. Le fonctionnement d'un FK est qu'il ne peut pas avoir de valeur dans cette colonne qui ne se trouve pas également dans la colonne de clé primaire de la table référencée.Si vous avez SQL Server Management Studio, ouvrez-le et
sp_help
'dbo.Sup_Item_Cat
'. Voir à quelle colonne se trouve FK et à quelle colonne de quelle table il fait référence. Vous insérez de mauvaises données.Faites-moi savoir si vous avez besoin de quelque chose de mieux expliqué!
la source
J'ai eu ce problème moi-même, concernant le message d'erreur qui est reçu en essayant de remplir un champ de clé étrangère. Je me suis retrouvé sur cette page dans l'espoir de trouver la réponse. La réponse vérifiée sur cette page est en effet la bonne, malheureusement je pense que la réponse est un peu incomplète pour les gens qui ne connaissent pas aussi bien SQL. Je suis assez apte à écrire du code, mais les requêtes SQL sont nouvelles pour moi ainsi que la création de tables de base de données.
Bien que la réponse cochée soit correcte:
Ce qui manque à cette réponse est simplement;
Une autre façon de le dire est;
En bref, de nombreux didacticiels semblent masquer ce fait, de sorte que si vous essayiez par vous-même et ne réalisiez pas qu'il y avait un ordre de fonctionnement, vous obtiendriez cette erreur. Naturellement, après l'ajout des données de clé primaire, vos données de clé étrangère dans la table enfant doivent être conformes au champ de clé primaire dans la table parent, sinon, vous obtiendrez toujours cette erreur.
Si quelqu'un a lu jusqu'ici. J'espère que cela a aidé à rendre la réponse vérifiée plus claire. Je sais que certains d'entre vous peuvent penser que ce genre de chose est assez simple et qu'ouvrir un livre aurait répondu à cette question avant sa publication, mais la vérité est que tout le monde n'apprend pas de la même manière.
la source
Vous essayez d'insérer un enregistrement avec une valeur dans la colonne de clé étrangère qui n'existe pas dans la table étrangère.
Par exemple: si vous avez des tables Livres et Auteurs où Livres a une contrainte de clé étrangère sur la table Auteurs et que vous essayez d'insérer un enregistrement de livre pour lequel il n'y a pas d'enregistrement d'auteur.
la source
Vous devrez publier votre déclaration pour plus de précisions. Mais...
Cette erreur signifie que la table dans laquelle vous insérez des données a une relation de clé étrangère avec une autre table. Avant d'insérer des données, la valeur du champ de clé étrangère doit d'abord exister dans l'autre table.
la source
Le problème n'est pas avec client_id d'après ce que je peux voir. Cela ressemble plus au problème avec la 4ème colonne, sup_item_cat_id
Je courrais
et faites attention à la colonne constraint_keys retournée pour la clé étrangère FK_Sup_Item_Sup_Item_Cat pour confirmer quelle colonne est le problème réel, mais je suis à peu près sûr que ce n'est pas celle que vous essayez de résoudre. Outre «123123», il semble également suspect.
la source
J'ai trouvé que tous les champs devaient correspondre EXACTEMENT.
Par exemple, l'envoi de «cat dog» n'est pas la même chose que l'envoi de «catdog».
Ce que j'ai fait pour résoudre ce problème était d'écrire le code FK de la table dans laquelle j'insérais des données, de prendre note de la "clé étrangère" qui avait les contraintes (dans mon cas, il y en avait 2) et de s'assurer que les valeurs de ces 2 champs correspondaient. EXACTEMENT car ils étaient dans le tableau qui lançait l'erreur de contrainte FK.
Une fois que j'ai corrigé les 2 champs donnant mes problèmes, la vie était belle!
Si vous avez besoin d'une meilleure explication, faites-le moi savoir.
la source
J'ai également eu la même erreur dans mon code SQL, cette solution fonctionne pour moi,
Vérifiez les données dans la table primaire. Il se peut que vous saisissiez une valeur de colonne qui n'est pas présente dans la colonne de clé primaire.
la source
Cela signifie exactement ce qu'il dit. Vous essayez d'insérer une valeur dans une colonne qui a une contrainte FK qui ne correspond à aucune valeur de la table de recherche.
la source
Vérifiez les champs de la relation pour laquelle la clé étrangère est définie. SQL Server Management Studio n'a peut-être pas eu les champs que vous vouliez sélectionnés lorsque vous avez défini la relation. Cela m'a brûlé dans le passé.
la source
la source
Les données de la table parent manquantes provoquent le problème. Dans votre problème, la non disponibilité des données dans "dbo.Sup_Item_Cat" provoque le problème
la source
J'ai eu le même problème lorsque j'ai utilisé des migrations en premier code pour créer ma base de données pour une application MVC 5. J'ai finalement trouvé la méthode de départ dans mon fichier configuration.cs à l'origine du problème. Ma méthode de départ créait une entrée de table pour la table contenant la clé étrangère avant de créer l'entrée avec la clé primaire correspondante.
la source
J'ai rencontré ce problème lorsque mes champs de valeur d'insertion contenaient des tabulations et des espaces qui n'étaient pas évidents à l'œil nu. J'avais créé ma liste de valeurs dans Excel, copiée et collée dans SQL et exécuté des requêtes pour trouver des non-correspondances sur mes champs FK.
Les requêtes de correspondance n'ont pas détecté la présence d'onglets et d'espaces dans mon champ FK, mais INSERT les a reconnus et a continué à générer l'erreur.
J'ai testé à nouveau en copiant le contenu du champ FK dans un enregistrement et en le collant dans la requête d'insertion. Lorsque cet enregistrement a également échoué, j'ai regardé de plus près les données et j'ai finalement détecté les tabulations / espaces.
Une fois que j'ai nettoyé les onglets / espaces supprimés, mon problème a été résolu. J'espère que cela aide quelqu'un!
la source