Não é possível.
Uma FK deve referenciar uma coluna com valor válido, em outra tabela.
É uma restrição de integridade.
Aliás, ao meu ver, se uma tabela possui uma FK que precisa ser “zerada” em determinada situação, é por que o design do banco ficou errado.
Seria como ter uma herança de pessoa, pessoa_fisica e pessoa_juridica, mas, ao invés das tabelas pessoa_fisica e pessoa_juridica terem uma FK para pessoa, o contrário. Entende o que digo?
G
gabriel_hilbig
Obrigado drsmachado
Tem sentido … Vou rever meu desenho do BD
ViniGodoy
Por favor, ao postar tópicos, evite usar apenas LETRAS MAIÚSCULAS no título ou no corpo da mensagem.
pmlm
Não necessariamente. Uma FK pode simplesmente ser NULL. E isso resolve o problema inicial.
drsmachado
pmlm:
drsmachado:
Aliás, ao meu ver, se uma tabela possui uma FK que precisa ser “zerada” em determinada situação, é por que o design do banco ficou errado.
Não necessariamente. Uma FK pode simplesmente ser NULL. E isso resolve o problema inicial.
Ok, mas o sentido de FK nos leva a acreditar que, se existe a necessidade de ela apontar a uma outra tabela, não faz sentido ser nula, não acha?
Como o caso que citei, da herança de pessoa. Seria inteligente cadastrar um cliente sem especificar qual o tipo de pessoa que ele é?
ViniGodoy
Uma tabela pode conter um campo opcional, mas que se for preenchido, deve vir de outra tabela.
Por exemplo, você pode ter um campo “Produto favorito” no cadastro de clientes que deve ser preenchido com a FK do produto que ele prefere de sua empresa, mas que pode ser nulo caso o cliente não tenha preferência declarada.
Claro que situações assim são mais exceções do que regra, e há quem prefira dizer que se a opção “Nenhum” existe, ela deveria estar cadastrada na tabela de produtos.
G
gabriel_hilbig
Ola;
Tive que rever a estrutura de meu BD.
Aboli as DUAS FKs ( pq nao podia manter Integridade Referencial ) e criei Indices para as mesmas colunas
pmlm
drsmachado:
Ok, mas o sentido de FK nos leva a acreditar que, se existe a necessidade de ela apontar a uma outra tabela, não faz sentido ser nula, não acha?
Qualquer combobox na tua aplicação que não seja obrigatória, vai ser uma FK que pode ser nula na tua BD.