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
