Sua modelagem está confusa.
Existem outros jeitos de resolver, mas não quer optar por usar chaves
artificiais?
Se eu entendi teu problema, acredito que a modelagem abaixo resolva.

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 (

idpeditens serial primary key,

 idpedido integer CONSTRAINT fk_pedido REFERENCES pedidos (idpedido) ON
DELETE CASCADE,

 idproduto integer CONSTRAINT fk_produto REFERENCES produtos (idproduto),

 qtde_item integer default 0

 );



CREATE TABLE pedpecas (

idpedpecas serial primary key,

 idpeditens integer CONSTRAINT fk_peditens REFERENCES peditens (idpeditens)
ON DELETE CASCADE,

 idpecas integer CONSTRAINT fk_pecas REFERENCES pecas (idpecas),

 qtde_pecas integer default 0

 );



--
Everton

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

>  Olá Pessoal,
>
>
>
> Estou  precisando de uma dica. Tenho as seguintes tabelas:
>
>
>
> 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???
>
>
>
> Agradeço qualquer dica.
>
> Att,
>
> Paulo.
>
>
>
>
>
>
>
>
> ------------------------------
>    <http://www.avast.com/>
>
> Este email foi escaneado pelo Avast antivírus.
> www.avast.com
>
>
> _______________________________________________
> 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

Responder a