Em 26 de abril de 2013 10:02, José Neto Nogueira <[email protected]>escreveu:

> Marcelo, para ficar mais facil, supondo que a tabelaA fosse tabelaProduto
> e a tabelaB fosse tabelaNotaFiscal, por exemplo, dado que para cada produto
> eu tenho um codigo que faz parte da PK (chave primaria) eu
> poderia ter varias repetições deste valor na tabela de nota fiscal na
> coluna FK que referencia essa PK desde que essa coluna não tivesse outra
> restrição, como ser UK (uniqqe key), mesmo que essa coluna da FK tenha
> restrição de NULL você poderia deixar vários nulos ou várias notas fiscais
> vendendo o mesmo produto, logo repetiria a FK. Isso é permitido pois não
> sendo PK ou UK pode repetir.
>
>
> 2013/4/26 Marcelo da Silva <[email protected]>
>
>> Então Danilo, FKs no meu modo de entender não que deva ter valores
>> únicos, mas a TabelaA de referencia devem sim ter valores únicos,
>>  mas na TabelaB podem ser N valores, é o velho 1(A) para N(B)
>>
>> TabelaA->Codigo
>> 1
>> 2
>> 3
>> 4
>>
>> TabelaB->Codigo (FK para TabelaA)
>> 1
>> 1
>> 1
>> 2
>> 2
>> 2
>> 3
>> 3
>> 3
>> ...
>>
>> Veja que os valores da TabelaB estão contidos na TabelaA e o FK me parece
>> que exige isso.
>> A duvida é se a TabelaB poderia estar ou não na TabelaA, mas quando
>> estiver deve ter o valor idêntico.
>> Pelo que vejo isso só é possível por Functions como você citou.
>>
>>
>>
>>
>> Em 26 de abril de 2013 09:34, Danilo Silva 
>> <[email protected]>escreveu:
>>
>>>
>>>
>>>
>>> Em 26 de abril de 2013 09:02, Marcelo da Silva <[email protected]>escreveu:
>>>
>>> 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 ?
>>>>
>>>> Até onde eu conheço por FKs, o campo referenciado deve possuir  valores
>>> únicos. Creio que para seu caso deverás criar uma function que faça essa
>>> verificação.
>>>
>>> []s
>>> Danilo
>>>
>>>
>>> _______________________________________________
>>> pgbr-geral mailing list
>>> [email protected]
>>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>>
>>>
>>
>>
>> --
>> Marcelo Silva
>> ----------------------------------------------------------------
>> Desenvolvedor Delphi / PHP
>> My Postgres database
>> Cel.: (11) 99693-4251
>>
>> _______________________________________________
>> pgbr-geral mailing list
>> [email protected]
>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>>
>>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

Então podemos ter N para N quando for FKs (sem unique), entendi...
Minha duvida surgiu porque eu tentei criar uma FK referenciando para um
Campo PK de outra tabela e ele me forçou a colocar NotNull no campo B

Vivendo e aprendendo :)

Mas no meu caso vou ter que fazer uns malabarismos pois o CampoA é uma PKey


-- 
Marcelo Silva
----------------------------------------------------------------
Desenvolvedor Delphi / PHP
My Postgres database
Cel.: (11) 99693-4251
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a