Otrzymuję następujący błąd. Czy mógłbyś mi pomóc?
Msg 547, poziom 16, stan 0, wiersz 1
Instrukcja INSERT spowodowała konflikt z ograniczeniem klucza OBCEGO „FK_Sup_Item_Sup_Item_Cat”. Konflikt wystąpił w bazie danych „dev_bo”, tabela „dbo.Sup_Item_Cat”. Instrukcja została zakończona.
Kod:
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')
Ostatnia kolumna client_id
powoduje błąd. Próbowałem umieścić wartość, która już istnieje w dbo.Sup_Item_Cat
kolumnie, odpowiadającą sup_item .. ale bez radości :-(
sql
sql-server
sql-server-2005
foreign-keys
SmartestVEGA
źródło
źródło
Sup_Item_Cat
tabeli. Niewiele więcej na ten temat.SELECT * FROM Sup_Item_Cat WHERE sup_item_cat_id = '123123'
zwraca wyniki?Odpowiedzi:
W twojej tabeli
dbo.Sup_Item_Cat
znajduje się odwołanie do klucza obcego do innej tabeli. Sposób działania FK polega na tym, że nie może on mieć wartości w tej kolumnie, która również nie znajduje się w kolumnie klucza podstawowego tabeli, do której istnieje odwołanie.Jeśli masz SQL Server Management Studio, otwórz go i
sp_help
'dbo.Sup_Item_Cat
'. Zobacz, w której kolumnie znajduje się FK i do której kolumny odwołuje się tabela. Wstawiasz złe dane.Daj mi znać, jeśli potrzebujesz czegoś lepiej wyjaśnionego!
źródło
Sam miałem ten problem dotyczący komunikatu o błędzie, który pojawia się podczas próby wypełnienia pola klucza obcego. Skończyłem na tej stronie w nadziei na znalezienie odpowiedzi. Sprawdzona odpowiedź na tej stronie jest rzeczywiście poprawna, niestety uważam, że odpowiedź jest nieco niekompletna dla osób, które nie znają SQL. Jestem dość zdolny do pisania kodu, ale zapytania SQL są dla mnie nowością, a także budowaniem tabel bazy danych.
Mimo że sprawdzona odpowiedź jest poprawna:
W tej odpowiedzi brakuje po prostu;
Innym sposobem, aby to powiedzieć;
Krótko mówiąc, wiele samouczków wydaje się zastanawiać nad tym faktem, więc jeśli spróbujesz samodzielnie i nie zdasz sobie sprawy, że istnieje kolejność operacji, otrzymasz błąd. Oczywiście po dodaniu danych klucza podstawowego dane klucza obcego w tabeli podrzędnej muszą być zgodne z polem klucza podstawowego w tabeli nadrzędnej, w przeciwnym razie nadal będzie występować ten błąd.
Jeśli ktoś poczyta tak daleko. Mam nadzieję, że pomogło to wyjaśnić sprawdzoną odpowiedź. Wiem, że niektórzy z was mogą uważać, że tego rodzaju rzeczy są dość proste i że otwarcie książki odpowiedziałoby na to pytanie przed opublikowaniem, ale prawda jest taka, że nie każdy uczy się w ten sam sposób.
źródło
Próbujesz wstawić rekord z wartością w kolumnie klucza obcego, która nie istnieje w tabeli obcej.
Na przykład: jeśli masz tabele Książki i autorzy, w których książki są ograniczone kluczem obcym w tabeli Autorzy i próbujesz wstawić rekord książki, dla którego nie ma rekordu autora.
źródło
Będziesz musiał opublikować swoje oświadczenie w celu uzyskania dodatkowych wyjaśnień. Ale...
Ten błąd oznacza, że tabela, do której wstawiasz dane, ma relację klucza obcego z inną tabelą. Przed wstawieniem danych wartość w polu klucza obcego musi najpierw istnieć w drugiej tabeli.
źródło
Problemem nie jest klient_id z tego, co widzę. Wygląda bardziej na problem z czwartą kolumną, sup_item_cat_id
biegałbym
i zwróć uwagę na kolumnę constraint_keys zwróconą dla klucza obcego FK_Sup_Item_Sup_Item_Cat, aby potwierdzić, która kolumna jest rzeczywistym problemem, ale jestem prawie pewna, że nie jest to ta, którą próbujesz naprawić. Poza tym „123123” również wygląda podejrzanie.
źródło
Odkryłem, że wszystkie pola muszą DOKŁADNIE pasować.
Na przykład wysłanie „kota-psa” nie jest tym samym, co wysłanie „kota-psa”.
Aby rozwiązać ten problem, wypisałem kod FK z tabeli, do której wstawiałem dane, zwróciłem uwagę na „klucz obcy”, który miał ograniczenia (w moim przypadku były 2) i upewniłem się, że te 2 pola pasują do siebie DOKŁADNIE tak, jak w tabeli zgłaszającej błąd Ograniczenia FK.
Gdy naprawiłem 2 pola dające moje problemy, życie było dobre!
Jeśli potrzebujesz lepszego wyjaśnienia, daj mi znać.
źródło
Mam również ten sam błąd w kodzie SQL. To rozwiązanie działa dla mnie,
Sprawdź dane w tabeli podstawowej Być może wprowadzasz wartość kolumny, która nie jest obecna w kolumnie klucza podstawowego.
źródło
Oznacza dokładnie to, co mówi. Próbujesz wstawić wartość do kolumny z ograniczeniem FK, która nie pasuje do żadnych wartości w tabeli odnośników.
źródło
Sprawdź dwukrotnie pola w relacji, dla której zdefiniowano klucz obcy. Program SQL Server Management Studio mógł nie mieć wybranych pól podczas definiowania relacji. To mnie paliło w przeszłości.
źródło
źródło
Brak danych tabeli nadrzędnej powoduje problem. W twoim problemie brak dostępności danych w „dbo.Sup_Item_Cat” powoduje problem
źródło
Miałem ten sam problem, kiedy użyłem migracji kodu do zbudowania bazy danych dla aplikacji MVC 5. W końcu znalazłem metodę inicjującą w moim pliku configuration.cs, która jest przyczyną problemu. Moją metodą początkową było utworzenie pozycji tabeli dla tabeli zawierającej klucz obcy przed utworzeniem pozycji z pasującym kluczem podstawowym.
źródło
Natrafiłem na ten problem, gdy moje pola wartości wstawiania zawierały tabulatory i spacje, które nie były oczywiste gołym okiem. Utworzyłem moją listę wartości w Excelu, skopiowałem i wkleiłem ją do SQL i uruchamiam zapytania, aby znaleźć niepasujące do moich pól FK.
Zapytania o dopasowanie nie wykryły tabulacji i spacji w moim polu FK, ale INSERT je rozpoznał i nadal generował błąd.
Testowałem ponownie, kopiując zawartość pola FK w jednym rekordzie i wklejając ją do zapytania wstawiania. Kiedy ten rekord również nie powiódł się, przyjrzałem się bliżej danym i w końcu wykryłem tabulatory / spacje.
Po wyczyszczeniu usuniętych kart / spacji mój problem został rozwiązany. Mam nadzieję, że to komuś pomoże!
źródło