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. -- 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
