[firebase-br] Chave Primaria e Chave Secundária Compostas
Forrest®
fernando.bg em gmail.com
Qua Jan 18 09:09:05 -03 2012
Em 17/01/2012 19:18, welder escreveu:
> CREATE TABLE PEDIDOS_ITENS (
> CODIGO INTEGER NOT NULL,
> PED_CODIGO INTEGER NOT NULL,
> PROD_CODIGO INTEGER NOT NULL,
> QTDE DOUBLE PRECISION,
> VALOR DOUBLE PRECISION);
> alter table PEDIDOS_ITENS
> add constraint PK_PEDIDOS_ITENS
> primary key (CODIGO,PED_CODIGO,PROD_CODIGO);
> *alter table PEDIDOS_ITENS*
> *add constraint FK_PEDIDOS_ITENS_1*
> *foreign key (PED_CODIGO)*
> *references PEDIDOS(CODIGO,EMP_CODIGO);*
>
> Ao rodar o ultimo script (em negrito) ocorre :
Bom dia
Na tabela pedidos itens você terá que ter o campo emp_codigo também pois ele faz parte da chave da tabela pedidos que você está tentando fazer a
referencia. deveria ficar assim a tabela de itens.
CREATE TABLE PEDIDOS_ITENS (
CODIGO INTEGER NOT NULL,
PED_CODIGO INTEGER NOT NULL,
EMP_CODIGO INTEGER NOT NULL,
PROD_CODIGO INTEGER NOT NULL,
QTDE DOUBLE PRECISION,
VALOR DOUBLE PRECISION);
alter table PEDIDOS_ITENS add constraint PK_PEDIDOS_ITENS primary key (CODIGO,PED_CODIGO, EMP_CODIGO,PROD_CODIGO);
alter table PEDIDOS_ITENS add constraint FK_PEDIDOS_ITENS_1 foreign key (PED_CODIGO, EMP_CODIGO) references PEDIDOS(CODIGO,EMP_CODIGO);
Agora vc pode tentar fazer a chave estrangeira dessa forma não sei se o FB vai permitir não testei.
alter table PEDIDOS_ITENS add constraint FK_PEDIDOS_ITENS_1 foreign key (PED_CODIGO) references PEDIDOS(CODIGO);
Mas mesmo que permita vejo um problema nisso, caso você tenha dois pedidos com o mesmo número ele vai trazer os itens dos dois pedidos independente da
empresas. Ah note que incluí o código da empresa na chave primária da tabela de itens.
T++++++++++++++++
Mais detalhes sobre a lista de discussão lista