2015-02-19 21:58 GMT-02:00 Paulo Afonso Pereira <
[email protected]>:

> CREATE TABLE pedidos (
>
>  idpedido serial PRIMARY KEY,
>
>  idcliente integer CONSTRAINT fk_pedido_cliente REFERENCES clientes
> (idcliente),
>
>  datapedido date default now(),
>
>  situacao varchar(1)
>
>  );
>
>
>
> CREATE TABLE peditens (
>
>  idpedido integer CONSTRAINT fk_pedido REFERENCES pedidos (idpedido) ON
> DELETE CASCADE,
>
>  idproduto integer CONSTRAINT fk_produto REFERENCES produtos (idproduto),
>
>  qtde_item integer default 0,
>
>  CONSTRAINT pk_peditens PRIMARY KEY (idpedido,idproduto)
>
>  );
>
>
>
> CREATE TABLE pedpecas (
>
>  idpedido integer CONSTRAINT fk_pedido REFERENCES pedidos (idpedido) ON
> DELETE CASCADE,
>
>  idproduto integer CONSTRAINT fk_produto REFERENCES peditens
> (idpedido,idproduto) ON DELETE CASCADE, (**AQUI**)
>
>  idpecas integer CONSTRAINT fk_pecas REFERENCES pecas (idpecas),
>
>  qtde_pecas integer default 0,
>
>  CONSTRAINT pk_pedpecas PRIMARY KEY (idpedido,idproduto,idpecas)
>
>  );
>
>
>
> Se excluir um pedido da tabela PAI, todos são excluído nos filhos, até
> aqui tudo OK.
>
> Se for excluído um produto da tabela ITENS, é possível fazer com que
> exclua apenas este produto em questão da tabela PEÇAS???
>

Pra mim parece que você já resolveu seu problema. Você já tem a FK
`fk_produto` de `pedpecas` para a PK de `peditens`, e marcada com `ON
DELETE CASCADE`, logo ao excluir um registro de `peditens` que tenha
registros relacionados em `pedpecas`, os últimos já serão excluídos. Não
era isso que você queria?

Atenciosamente,
-- 
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a