[firebase-br] Chave Primaria e Chave Secundária Compostas

welder wellder em gmail.com
Ter Jan 17 19:18:22 -03 2012


Boa tarde a todos,


A tempo tenho esse problema / dúvida, mas só hoje parei para postar

Estou tentando criar as seguintes tabelas com seu relacionamentos. Vejam
script abaixo:

CREATE TABLE EMRPESA (
    CODIGO INTEGER NOT NULL,
    RAZAOSOCIAL VARCHAR(200));
alter table EMRPESA
add constraint PK_EMRPESA
primary key (CODIGO);

CREATE TABLE PRODUTOS (
    CODIGO INTEGER NOT NULL,
    EMP_CODIGO INTEGER NOT NULL,
    DESCRICAO VARCHAR(200),
    UNID CHAR(4));
alter table PRODUTOS
add constraint PK_PRODUTOS
primary key (EMP_CODIGO,CODIGO);
alter table PRODUTOS
add constraint FK_PRODUTOS_1
foreign key (EMP_CODIGO)
references EMRPESA(CODIGO);

CREATE TABLE PEDIDOS (
    CODIGO INTEGER NOT NULL,
    EMP_CODIGO INTEGER NOT NULL,
    DATA DATE,
    VALOR DOUBLE PRECISION);
alter table PEDIDOS
add constraint PK_PEDIDOS
primary key (CODIGO,EMP_CODIGO);
alter table PEDIDOS
add constraint FK_PEDIDOS_1
foreign key (EMP_CODIGO)
references EMRPESA(CODIGO);

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 :

---------- STATEMENT ----------

alter table PEDIDOS_ITENS
add constraint FK_PEDIDOS_ITENS_1
foreign key (PED_CODIGO)
references PEDIDOS(CODIGO,EMP_CODIGO)


---------- ERROR MESSAGE ----------

This operation is not defined for system tables.
Dynamic SQL Error.
SQL error code = -607.
Invalid command.
FOREIGN KEY column count does not match PRIMARY KEY.



Como resolver? Existe a possibilidade de trabalhar com chave secundária
sendo que a primaria é composta?



-- 
Welder Vieira
Técnico em Manutenção e Conectividade
Celular: (63) 8118-6461



Mais detalhes sobre a lista de discussão lista