[firebase-br] duvida para criar foreign key

Gustavo Moda gustavo.moda em gmail.com
Sex Dez 5 17:10:25 -03 2008


Natália,

Prefira criar as FKS fora do comando CREATE TABLE, não terás dores de
cabeça com auto-relacionamentos.
Monte o script sempre da seguinte forma

1) Cria os dominios
2) Cria as tabelas;
3) Cria as pks;
4) Cria as fks
5) Cria os generators;
6) Cria as trigger;

A mais uma coisinha, sempre dê nomes as CONSTRAINT FK e PK, é uma mão
na roda quando o FB retorna o erro. Você lendo o nome da CONSTRAINT já
mata qual tabela. Ganhando tempo.

Mais uma "cornetada"! use domain, melhor, deixa o banco limpinho, e
você pode dar nomes aos tipos.
Ex.
CREATE DOMAIN DOM_UF CHAR(2);

Se o seu tipo uf mudar ( é exemplo heimmm, seu que a UF nunca irá
mudar), basta mudar o DOMAIN e voalá, sem dores de cabeça, todos os
campos relacionado ao domínio serão modificados. Isso é muito util
quando é usado CHECK de tipos no domain..
etc. etc.

"Cornetando" mais ainda, use sulfixos ou prefixos para nomear os objetos...
TR = Para trigger
FK = Para Fks;.
PK = para pks;
IX = para indices
UQ = Unique Key...


Agora, vamos ao seu erro.
CREATE DOMAIN DOM_INTEGER INTEGER;


CREATE TABLE Texto_Assunto (
  idTextoFK DOM_INTEGER NOT NULL,
  idAssuntoFK DOM_INTEGER NOT NULL,
  CONSTRAINT "PK_Texto_Assunto" PRIMARY KEY (idTextoFK)
);


ALTER TABLE Texto_Assunto ADD CONSTRAINT "FK_Texto_Assunto-Assunto"
FOREIGN KEY (idAssuntoFK ) REFERENCES Texto_Assunto (idTextoFK)
  USING INDEX "IX_Texto_Assunto-Assunto";


Inté! ;-)

Dá uma lida no Starting guide do fb.. Muito bom!




Mais detalhes sobre a lista de discussão lista