Olá,

2010/1/4 Alexsander Rosa <[email protected]>

> Tenho duas tabelas, "produto" e "estoque". Em "produto" a PK é "código"; há
> também um par de campos (cod_base, quantidade) onde "cod_base" é uma FK
> auto-referenciada. Este par serve para as embalagens: o produto 1234 pode
> ser uma embalagem com 12 unidades do produto 1231 por exemplo. As unidades
> (UN, CX, PCT, etc) são tratadas de acordo.
>
> Na tabela "estoque" há um campo "código_fk" que é FK de produto. Somente
> produtos-base (isto é, com NULL em "cod_base") podem ter registros em
> "estoque". No entanto, às vezes um produto deixa de ser base e passa a ser
> embalagem*, deixando registros "sobrando" na tabela "estoque"; tenho que
> controlar isso via aplicação mas gostaria de usar o SGBD para garantir esta
> integridade de forma mais efetiva.
>
> Segundo sugestão do IRC, tentei criar uma coluna extra em "estoque",
> deixada sempre em NULL, criando uma nova FK em "estoque" usando os dois
> campos de "produto" (cod_produto e cod_base). Consegui criar esta constraint
> mas ela não funcionou: valores inválidos ainda puderam ser inseridos.
>
> * Exemplo: um blister com 4 pilhas é vendido como "base" e vem numa
> embalagem com 50 blisters. Um dia o fabricante resolve fazer blisters com 2
> pilhas -- ou o lojista resolve abrir os blisters e vender as pilhas
> individualmente.
>

Não entendi. Teria como colocar um exemplo mais claro, por exemplo com o
valor que segundo você comentou que foi inserido e não poderia ter
acontecido.

>
> --
> Atenciosamente,
> Alexsander da Rosa
> Linux User #113925
>
> "Extremismo na defesa da liberdade não é defeito.
> Moderação na busca por justiça não é virtude."
> -- Barry Goldwater
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>

[]s
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a