2013/4/26 Marcelo da Silva <[email protected]>

> Sei que ao criamos uma FK o campo lincado devem ter o mesmo conteúdo nas
> tabelas A e B
>
> Exemplo:
> TabelaA->Codigo = 123
> TabelaB->Codigo = 123 FK->TabelaA
>
> Tenho a seguinte duvida:
>
> TabelaB->Codigo pode ser
> 0
> 123
> 0
> 456
> etc
>
> Queria saber se existe uma FK que diga que quando o valor de B for > 0 ele
> esteja na tabela A, senão ele permite que seja 0 (somente)
>
> Isso existe, ou só por Triggers / Procedures ?
>
>
>
NÃO. Isso vai ferir a restrição de integridade referencial.

MAS, há uma exceção. Quando o campo da tabela que referencia (TabelaB)
aceitar NULL, você pode colocar o valor do campo como NULL e, nesse caso, o
PostgreSQL não vai fazer a checagem da FK.

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a