Ich erhalte den folgenden Fehler. Kannst du mir bitte Helfen?
Nachricht 547, Ebene 16,
Status 0, Zeile 1 Die INSERT-Anweisung stand in Konflikt mit der FOREIGN KEY-Einschränkung "FK_Sup_Item_Sup_Item_Cat". Der Konflikt trat in der Datenbank "dev_bo", Tabelle "dbo.Sup_Item_Cat" auf. Die Anweisung wurde beendet.
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')
Die letzte Spalte client_id
verursacht den Fehler. Ich habe versucht, den Wert, der bereits in der vorhanden ist, dbo.Sup_Item_Cat
in die Spalte zu setzen, die dem sup_item entspricht. Aber keine Freude :-(
sql
sql-server
sql-server-2005
foreign-keys
SmartestVEGA
quelle
quelle
Sup_Item_Cat
Tabelle enthält. Dazu gibt es nicht viel zu sagen.SELECT * FROM Sup_Item_Cat WHERE sup_item_cat_id = '123123'
Ergebnisse zurückgegeben werden?Antworten:
In Ihrer Tabelle enthält
dbo.Sup_Item_Cat
es einen Fremdschlüsselverweis auf eine andere Tabelle. Ein FK funktioniert so, dass er keinen Wert in dieser Spalte haben kann, der sich nicht auch in der Primärschlüsselspalte der referenzierten Tabelle befindet.Wenn Sie über SQL Server Management Studio verfügen, öffnen Sie es und
sp_help
'dbo.Sup_Item_Cat
'. Sehen Sie, in welcher Spalte sich FK befindet und auf welche Spalte welcher Tabelle es verweist. Sie fügen einige schlechte Daten ein.Lassen Sie mich wissen, wenn Sie etwas besser erklärt brauchen!
quelle
Ich hatte dieses Problem selbst in Bezug auf die Fehlermeldung, die beim Auffüllen eines Fremdschlüsselfelds empfangen wird. Ich bin auf dieser Seite gelandet, in der Hoffnung, die Antwort zu finden. Die überprüfte Antwort auf dieser Seite ist in der Tat die richtige. Leider bin ich der Meinung, dass die Antwort für Leute, die mit SQL nicht so vertraut sind, etwas unvollständig ist. Ich bin ziemlich geschickt darin, Code zu schreiben, aber SQL-Abfragen sind für mich neu und das Erstellen von Datenbanktabellen.
Obwohl die überprüfte Antwort richtig ist:
Was in dieser Antwort fehlt, ist einfach;
Ein anderer Weg, es zu sagen, ist;
Kurz gesagt, viele der Tutorials scheinen sich über diese Tatsache hinwegzusetzen, sodass Sie diesen Fehler erhalten würden, wenn Sie es selbst versuchen würden und nicht bemerken würden, dass es eine Reihenfolge von Operationen gibt. Nach dem Hinzufügen der Primärschlüsseldaten müssen Ihre Fremdschlüsseldaten in der untergeordneten Tabelle natürlich mit dem Primärschlüsselfeld in der übergeordneten Tabelle übereinstimmen. Andernfalls wird dieser Fehler weiterhin angezeigt.
Wenn jemand so weit nachlesen. Ich hoffe, dies hat dazu beigetragen, die überprüfte Antwort klarer zu machen. Ich weiß, dass es einige von Ihnen gibt, die vielleicht das Gefühl haben, dass so etwas ziemlich einfach ist und dass das Öffnen eines Buches diese Frage beantwortet hätte, bevor es veröffentlicht wurde, aber die Wahrheit ist, dass nicht jeder auf die gleiche Weise lernt.
quelle
Sie versuchen, einen Datensatz mit einem Wert in die Fremdschlüsselspalte einzufügen, der in der Fremdtabelle nicht vorhanden ist.
Beispiel: Wenn Sie Bücher- und Autorentabellen haben, in denen Bücher eine Fremdschlüsseleinschränkung für die Autorentabelle haben, und Sie versuchen, einen Buchdatensatz einzufügen, für den es keinen Autorendatensatz gibt.
quelle
Sie müssen Ihre Erklärung zur weiteren Klärung veröffentlichen. Aber...
Dieser Fehler bedeutet, dass die Tabelle, in die Sie Daten einfügen, eine Fremdschlüsselbeziehung zu einer anderen Tabelle hat. Bevor Daten eingefügt werden können, wird der Wert in dem Fremdschlüsselfeld muss zuerst in der anderen Tabelle vorhanden ist .
quelle
Das Problem ist nicht mit client_id, soweit ich sehen kann. Es sieht eher so aus, als ob das Problem in der 4. Spalte liegt, sup_item_cat_id
ich würde Rennen
und achten Sie auf die Spalte Constraint_keys, die für den Fremdschlüssel FK_Sup_Item_Sup_Item_Cat zurückgegeben wird, um zu bestätigen, welche Spalte das eigentliche Problem ist, aber ich bin mir ziemlich sicher, dass es nicht die ist, die Sie beheben möchten. Außerdem sieht '123123' auch verdächtig aus.
quelle
Ich habe festgestellt, dass alle Felder genau übereinstimmen müssen.
Zum Beispiel ist das Senden von "Katzenhund" nicht dasselbe wie das Senden von "Katzenhund".
Um dies zu beheben, habe ich den FK-Code aus der Tabelle, in die ich Daten einfügte, ausgeschrieben, den "Fremdschlüssel" mit den Einschränkungen (in meinem Fall 2) notiert und sichergestellt, dass diese beiden Feldwerte übereinstimmen Genau so, wie sie in der Tabelle waren, die den FK-Einschränkungsfehler auslöste.
Nachdem ich die 2 Felder repariert hatte, die meine Probleme verursachten, war das Leben gut!
Wenn Sie eine bessere Erklärung benötigen, lassen Sie es mich wissen.
quelle
Ich habe auch den gleichen Fehler in meinem SQL-Code erhalten. Diese Lösung funktioniert für mich.
Überprüfen Sie die Daten in der Primärtabelle. Möglicherweise geben Sie einen Spaltenwert ein, der in der Primärschlüsselspalte nicht vorhanden ist.
quelle
Es bedeutet genau das, was es sagt. Sie versuchen, einen Wert in eine Spalte einzufügen, für die eine FK-Einschränkung gilt, die keinen Werten in der Nachschlagetabelle entspricht.
quelle
Überprüfen Sie die Felder in der Beziehung, für die der Fremdschlüssel definiert ist. In SQL Server Management Studio wurden möglicherweise nicht die gewünschten Felder ausgewählt, als Sie die Beziehung definiert haben. Das hat mich in der Vergangenheit verbrannt.
quelle
quelle
Fehlende übergeordnete Tabellendaten verursachen das Problem. In Ihrem Problem verursacht die Nichtverfügbarkeit von Daten in "dbo.Sup_Item_Cat" das Problem
quelle
Ich hatte das gleiche Problem, als ich Code-First-Migrationen verwendete, um meine Datenbank für eine MVC 5-Anwendung zu erstellen. Ich habe schließlich festgestellt, dass die Seed-Methode in meiner Datei configuration.cs das Problem verursacht. Meine Startmethode bestand darin, einen Tabelleneintrag für die Tabelle mit dem Fremdschlüssel zu erstellen, bevor der Eintrag mit dem passenden Primärschlüssel erstellt wurde.
quelle
Ich bin auf dieses Problem gestoßen, als meine Felder zum Einfügen von Werten Tabulatoren und Leerzeichen enthielten, die mit bloßem Auge nicht offensichtlich waren. Ich hatte meine Werteliste in Excel erstellt, kopiert und in SQL eingefügt und Abfragen ausgeführt, um Nichtübereinstimmungen in meinen FK-Feldern zu finden.
Die Übereinstimmungsabfragen haben nicht festgestellt, dass in meinem FK-Feld Tabulatoren und Leerzeichen vorhanden sind, aber das INSERT hat sie erkannt und den Fehler weiterhin generiert.
Ich habe erneut getestet, indem ich den Inhalt des FK-Felds in einen Datensatz kopiert und in die Einfügeabfrage eingefügt habe. Als dieser Datensatz ebenfalls fehlschlug, sah ich mir die Daten genauer an und entdeckte schließlich die Tabulatoren / Leerzeichen.
Nachdem ich entfernte Tabulatoren / Leerzeichen entfernt hatte, wurde mein Problem behoben. Hoffe das hilft jemandem!
quelle