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
