Eu estou recebendo o seguinte erro. Podes ajudar-me, por favor?
Mensagem 547, Nível 16, Estado 0, Linha 1
A instrução INSERT entra em conflito com a restrição FOREIGN KEY "FK_Sup_Item_Sup_Item_Cat". O conflito ocorreu no banco de dados "dev_bo", tabela "dbo.Sup_Item_Cat". A instrução foi encerrada.
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')
A última coluna client_id
está causando o erro. Eu tentei colocar o valor que já existe no dbo.Sup_Item_Cat
na coluna, correspondente ao sup_item .. mas sem alegria :-(
sql
sql-server
sql-server-2005
foreign-keys
SmartestVEGA
fonte
fonte
Sup_Item_Cat
tabela. Não há muito mais a dizer sobre isso.SELECT * FROM Sup_Item_Cat WHERE sup_item_cat_id = '123123'
retorna resultados?Respostas:
Na sua tabela
dbo.Sup_Item_Cat
, ele possui uma referência de chave estrangeira para outra tabela. A maneira como um FK funciona é que ele não pode ter um valor nessa coluna que também não esteja na coluna de chave primária da tabela referenciada.Se você possui o SQL Server Management Studio, abra-o e
sp_help
'dbo.Sup_Item_Cat
'. Veja em qual coluna o FK está e qual coluna de qual tabela ele faz referência. Você está inserindo alguns dados incorretos.Deixe-me saber se você precisar de algo explicado melhor!
fonte
Eu mesmo tive esse problema, em relação à mensagem de erro recebida ao tentar preencher um campo de chave estrangeira. Acabei nesta página na esperança de encontrar a resposta. A resposta verificada nesta página é realmente a correta, infelizmente, sinto que a resposta é um pouco incompleta para pessoas que não conhecem o SQL. Eu sou bastante apto a escrever código, mas as consultas SQL são novas para mim, além de criar tabelas de banco de dados.
Apesar da resposta verificada estar correta:
O que está faltando nesta resposta é simplesmente;
Outra maneira de dizer isso é;
Em resumo, muitos dos tutoriais parecem estar escondendo esse fato, de modo que, se você tentar por conta própria e não perceber que há uma ordem de operações, poderá receber esse erro. Naturalmente, após adicionar os dados da chave primária, os dados da chave estrangeira na tabela filho devem estar em conformidade com o campo da chave primária na tabela pai; caso contrário, você ainda receberá esse erro.
Se alguém ler até aqui. Espero que isso tenha ajudado a tornar a resposta marcada mais clara. Sei que alguns de vocês podem achar que esse tipo de coisa é bem direta e que abrir um livro teria respondido a essa pergunta antes de ser publicada, mas a verdade é que nem todo mundo aprende da mesma maneira.
fonte
Você está tentando inserir um registro com um valor na coluna de chave estrangeira que não existe na tabela estrangeira.
Por exemplo: Se você possui tabelas Livros e Autores em que Livros possui uma restrição de chave estrangeira na tabela Autores e tenta inserir um registro de livro para o qual não há registro de autor.
fonte
Você precisará postar sua declaração para obter mais esclarecimentos. Mas...
Esse erro significa que a tabela na qual você está inserindo dados possui um relacionamento de chave estrangeira com outra tabela. Antes que os dados possam ser inseridos, o valor no campo de chave estrangeira deve existir primeiro na outra tabela.
fonte
O problema não está no client_id, pelo que posso ver. Parece mais que o problema está na quarta coluna, sup_item_cat_id
Eu correria
e preste atenção à coluna constraint_keys retornada para a chave estrangeira FK_Sup_Item_Sup_Item_Cat para confirmar qual coluna é o problema real, mas tenho certeza de que não é a que você está tentando corrigir. Além de '123123' parece suspeito também.
fonte
Algo que descobri foi que todos os campos precisam corresponder exatamente.
Por exemplo, enviar 'cachorro-gato' não é o mesmo que enviar 'cachorro-gato'.
O que eu fiz para solucionar isso foi criar um script do código FK da tabela em que eu estava inserindo dados, anote a "Chave estrangeira" que apresentava as restrições (no meu caso, eram 2) e verifique se os dois campos correspondem aos valores EXATAMENTE como estavam na tabela que estava lançando o erro FK Constraint.
Depois de consertar os 2 campos dando meus problemas, a vida era boa!
Se você precisar de uma explicação melhor, me avise.
fonte
Também recebi o mesmo erro no meu código SQL. Esta solução funciona para mim,
Verifique os dados na tabela principal. Talvez você esteja inserindo um valor de coluna que não está presente na coluna de chave primária.
fonte
Significa exatamente o que diz. Você está tentando inserir um valor em uma coluna que tenha uma restrição FK que não corresponde a nenhum valor na tabela de pesquisa.
fonte
Verifique novamente os campos no relacionamento para o qual a chave estrangeira está definida. O SQL Server Management Studio pode não ter os campos que você deseja selecionar ao definir o relacionamento. Isso me queimou no passado.
fonte
fonte
Os dados da tabela pai ausentes causam o problema. No seu problema, a não disponibilidade de dados em "dbo.Sup_Item_Cat" causa o problema
fonte
Eu tive o mesmo problema quando usei migrações de primeiro código para criar meu banco de dados para um aplicativo MVC 5. Acabei encontrando o método de propagação no meu arquivo configuration.cs causando o problema. Meu método de propagação foi criar uma entrada de tabela para a tabela que contém a chave estrangeira antes de criar a entrada com a chave primária correspondente.
fonte
Encontrei esse problema quando meus campos de valor de inserção continham guias e espaços que não eram óbvios a olho nu. Eu criei minha lista de valores no Excel, copiei e colei no SQL e executei consultas para encontrar não correspondências nos meus campos FK.
As consultas de correspondência não detectaram que havia tabulações e espaços no meu campo FK, mas o INSERT as reconheceu e continuou gerando o erro.
Testei novamente copiando o conteúdo do campo FK em um registro e colando-o na consulta de inserção. Quando esse registro também falhou, olhei mais de perto os dados e finalmente detecte as guias / espaços.
Depois de limpar as guias / espaços removidos, meu problema foi resolvido. Espero que isso ajude alguém!
fonte