[firebase-br] RES: RES: duvida para criar foreign key

Sandro Souza escovadordebits em gmail.com
Sex Dez 5 18:27:49 -03 2008


Bom dia/tarde Natália.

Linda, é como o Daniel citou. Procure separar a criação das chaves
estrangeiras da criação da tabela.

Isso aqui é só um mero exemplo:

/* Cria a tabela */
CREATE TABLE TEXTO_ASSUNTO (
  IDTEXTOFK INTEGER NOT NULL,
  IDASSUNTOFK INTEGER NOT NULL
);

/* Cria a chave primária */
ALTER TABLE TEXTO_ASSUNTO
ADD CONSTRAINT PK_TEXTO_ASSUNTO
PRIMARY KEY(IDTEXTOFK,IDASSUNTOFK);

/* Cria a primeira chave estrangeira */
ALTER TABLE TEXTO_ASSUNTO
ADD CONSTRAINT FK_TEXTO_ASSUNTO_TEXTO
FOREIGN KEY(IDTEXTOFK) REFERENCES TEXTO;

/* Cria a segunda chave estrangeira */
ALTER TABLE TEXTO_ASSUNTO
ADD CONSTRAINT FK_TEXTO_ASSUNTO_ASSUNTO
FOREIGN KEY(IDASSUNTOFK) REFERENCES ASSUNTO;

Não é necessário que os nomes dos campos que fazem parte de uma chave
estrangeira existam na tabela de pesquisa.

Quando você não informa os campos da tabela de pesquisa, então serão
utilizados os campos que fazem parte da chave primária da tabela de
pesquisa, ou seja:

........FOREIGN KEY(IDTEXTOFK) REFERENCES TEXTO

Todos os valores do campo IDTEXTOFK da tabela TEXTO_ASSUNTO devem constar no
campo da chave primária da tabela TEXTO, qualquer que seja o nome dele.

Outro exemplo:

........FOREIGN KEY(IDTEXTOFK) REFERENCES TEXTO(IDTEXTO);

Todos os valores do campo IDTEXTOFK da tabela TEXTO_ASSUNTO devem constar no
campo IDTEXTO da tabela TEXTO.

Espero ter ajudado mais que atrapalhado. :D

2008/12/5 Natália Maciel <natinhamg em gmail.com>

> POis é Daniel, renomeei e continua dando o mesmo erro. Este comando esta
> errado?
>
>
> 2008/12/5 Daniel (VIPA) <daniel em vipa.com.br>
>
> > Oi Natália!
> >
> > Não é isso não. Os campos podem ter nomes diferentes pq na criação da FK
> vc
> > define o nome do campo nas duas tabelas (mestre e detalhe). Deve ser
> outra
> > coisa...
> >
> > Sds,
> >
> > Daniel
> >
> > -----Mensagem original-----
> > De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br]
> > Em
> > nome de Natália Maciel
> > Enviada em: sexta-feira, 5 de dezembro de 2008 16:22
> > Para: FireBase
> > Assunto: Re: [firebase-br] RES: duvida para criar foreign key
> >
> > Oi Daniel, ja sei onde esta meu erro então! é que o nome do campo da FK
> não
> > é igual ao campo da PK na outra tabela, resumidamente, não é isso?
> > Obrigada (ah, estou usando o Interbase)
> >
> > Abraços
> >
> > 2008/12/5 Daniel (VIPA) <daniel em vipa.com.br>
> >
> > > Boa Tarde Natália!
> > >
> > > Tente criar primeiro a tabela...
> > > CREATE TABLE Texto_Assunto (
> > >  idTextoFK integer NOT NULL,
> > >  idAssuntoFK INTEGER NOT NULL);
> > >
> > > Depois as Constraints...
> > >
> > > ALTER TABLE Texto_Assunto ADD CONSTRAINT "COLOQUE AQUI O NOME DA PK"
> > > PRIMARY
> > > KEY (COLOQUE AQUI O(S) NOME(S) DO(S) CAMPO(S) CHAVE)
> > >
> > > ALTER TABLE Texto_Assunto ADD CONSTRAINT "NOME DA FK" FOREIGN KEY (nome
> > do
> > > campo) REFERENCES Texto (nome do campo chave da tabela Texto)
> > >
> > > Sds,
> > >
> > > Daniel
> > >
> > >
> > >
> > > -----Mensagem original-----
> > > De: lista-bounces em firebase.com.br [mailto:
> lista-bounces em firebase.com.br]
> > > Em
> > > nome de Natália Maciel
> > > Enviada em: sexta-feira, 5 de dezembro de 2008 15:53
> > > Para: lista em firebase.com.br
> > > Assunto: [firebase-br] duvida para criar foreign key
> > >
> > > estou tentando criar uma foreign key e esta dando o seguinte erro
> > >
> > > CREATE TABLE Texto_Assunto (
> > >  idTextoFK integer NOT NULL,
> > >  idAssuntoFK INTEGER NOT NULL,
> > >  PRIMARY KEY(idTextoFK, idAssuntoFK),
> > >  foreign key idTextoFK references Texto,
> > >  foreign key idassuntofk references Assunto
> > > );
> > >
> > > *erro: Invalid token.
> > > Dynamic SQL Error.
> > > SQL error code = -104.
> > > Token unknown - line 7, char 13.
> > > idTextoFK.*
> > >
> > > Na tabela texto eu não tenho este campo, idTextoFK, eu tenho apenas
> > > idTExto,
> > > será que é isso? Se for então eu tenho que criar a FK com o mesmo nome
> da
> > > PK
> > > da outra tabela?
> > >
> > > Obrigada
> > >
> > >
> > >
> > > --
> > > []s,
> > > Naty
> > >  ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > >
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> >
> >
> >
> > --
> > []s,
> > Naty
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
>
>
>
> --
> []s,
> Naty
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista