[firebase-br] RES: Erro Foreign Key

Gustavo Moda gustavo.moda em gmail.com
Qua Jun 3 07:58:41 -03 2009


Olá,

As colunas devem ser informada na criação da FK da mesma forma que foi
criada na PK e na mesma ordem.
As colunas devem ter os mesmos tipos.

Verifique isso.

Abaixo um exemplo que elaborei agora para ilustrar, pk simples e compostas,
fks simples e compostas e relacionamento com 3 tabelas.

/* tabelas */
CREATE TABLE PAIS (
    PAIS_ID       VARCHAR(3) NOT NULL,
    PAIS          VARCHAR(30) NOT NULL
);

CREATE TABLE UF (
    PAIS_ID       VARCHAR(3) NOT NULL,
    UF_ID         CHAR(2) NOT NULL,
    ESTADO        VARCHAR(30)
);

CREATE TABLE LOCALIDADE (
    PAIS_ID       VARCHAR(3) NOT NULL,
    UF_ID         CHAR(2) NOT NULL,
    LOCALIDADE_ID INTEGER NOT NULL,
    LOCALIDADE VARCHAR(100)
);


/* Primary Keys */
ALTER TABLE PAIS ADD CONSTRAINT PK_PAIS PRIMARY KEY (PAIS_ID);
ALTER TABLE UF ADD CONSTRAINT PK_UF PRIMARY KEY (PAIS_ID, UF_ID);
ALTER TABLE lOCALIDADE ADD CONSTRAINT PK_LOCALIDADE PRIMARY KEY
(LOCALIDADE_ID);


/* Foreign Keys */
ALTER TABLE UF ADD CONSTRAINT "FK_UF-PAIS" FOREIGN KEY (PAIS_ID) REFERENCES
PAIS(PAIS_ID);
ALTER TABLE LOCALIDADE ADD CONSTRAINT "FK_LOCALIDADE-PAIS" FOREIGN KEY
(PAIS_ID) REFERENCES PAIS(PAIS_ID);
ALTER TABLE LOCALIDADE ADD CONSTRAINT "FK_LOCALIDADE-ESTADO" FOREIGN KEY
(PAIS_ID, UF_ID) REFERENCES UF(PAIS_ID, UF_ID);


p.s. O ideal é usar dominios, mas aih é outra história.



Mais detalhes sobre a lista de discussão lista