[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