[firebase-br] Criação de Foreign Key

Gladiston Santana gladiston em vidy.com.br
Ter Jun 18 17:54:25 -03 2013


A mensagem de erro parece ser autoexplicativa.
Se estiver usando o ibexpert, feche todas as janelas para assegurar que a
tabela TB_BONUS não esteja em uso, deixe apenas a janela em que rodará o
script.
Além disso, a dica do Eduardo é pertinente, você pode criar a sua tabela
num único passo com create table e adicionar as PKs, FKs e Indices em
comandos posteriores.


Em 18 de junho de 2013 17:30, Patricia Aparecida Ayres <
patricia.ayres em bol.com.br> escreveu:

> Eduardo,
>  Você criou Primary Key na tabela.
>  Estou querendo criar Foreign Key, se você observar vai ver que na
> TB_BONUS_PROFESSOR foi criada uma chave primaria dupla CD_BONUS e
> CD_FUNCIONARIO que são respectivamente chaves estrangueiras das tabelas
> TB_BONUS e FUMCIONARIOS (que não mostrei no script abaixo).
>
> Sei que poderia ter feito da seguinte forma:
>
> CREATE TABLE TB_BONUS_PROFESSOR
> (
>         CD_BONUS INTEGER NOT NULL,
>         CD_FUNCIONARIO  INTEGER NOT NULL,
>         QT_ALUNOS_PROF INTEGER,
>         VL_BONUS_PROF DOUBLE PRECISION,
>         VL_BONUS_TOTAL DOUBLE PRECISION,
>         VL_COTA_ALUNO  DOUBLE PRECISION,
>         VL_PERCENTUAL_PROF DOUBLE PRECISION,
> CONSTRAINT "PK_BONUS_PROFESSOR" PRIMARY KEY ("CD_BONUS","CD_FUNCIONARIO"),
> CONSTRAINT FK_TB_BONUS_PROFESSOR_1 FOREIGN KEY (CD_BONUS) REFERENCES
> TB_BONUS (CD_BONUS) ON UPDATE NO ACTION ON DELETE NO ACTION,
> CONSTRAINT FK_TB_BONUS_PROFESSOR_2 FOREIGN KEY (CD_FUNCIONARIO) REFERENCES
> FUNCIONARIOS (CD_FUNCIONARIO) ON UPDATE NO ACTION ON DELETE NO ACTION
> );
> COMMIT;
>
> porém o erro persiste:
>
>  ISC ERROR CODE:335544351
>  ISC ERROR MESSAGE:
>  unsuccessful metadata update
>  object TB_BONUS is in use
>
> Att.
>
> Patricia
>
>
> Em 18/06/2013 17:07, Eduardo Pereira < atilaedu em gmail.com > escreveu:
> Pode ser assim tambem:
>
> /* Tabela: TB_ESTADO */
>
> CREATE TABLE TB_ESTADO (
>  "cod_estado" INTEGER NOT NULL,
>  "desc_estado" VARCHAR (50) CHARACTER SET WIN1252 COLLATE WIN1252,
>  "sigla_estado" CHAR (2) CHARACTER SET WIN1252 COLLATE WIN1252,
>  "dt_cadastro" TIMESTAMP);
>
>
>
> /* Primary keys definition */
>
> ALTER TABLE TB_ESTADO ADD CONSTRAINT PK_TB_ESTADO PRIMARY KEY
> ("cod_estado");
>
> ou
>
> /* Tabela: TB_ESTADO */
>
> CREATE TABLE TB_ESTADO (
>  "cod_estado" INTEGER NOT NULL,
>  "desc_estado" VARCHAR,
>  "sigla_estado" CHAR (2),
>  "dt_cadastro" TIMESTAMP,
> CONSTRAINT PK_TB_ESTADO PRIMARY KEY ("cod_estado")
> );
>
>
>
> Em 18 de junho de 2013 16:45, Patricia Aparecida Ayres <
> patricia.ayres em bol.com.br> escreveu:
>
> > Boa Tarde,
> >
> > Estou tendo dificuldades em criar uma Foreign Key em um banco de dados
> > Firebird 1.5, através de um script.
> > Ocorre que é executado um Alter Table criando a Foreign Key ocorre um
> erro
> > informando que a tabela de referencia está em uso.
> > O que devo fazer para que a Foreign Key seja criada? O que pode estar
> > acontecendo?
> >
> > O erro é o seguinte:
> >
> > ISC ERROR CODE:335544351
> > ISC ERROR MESSAGE:
> > unsuccessful metadata update
> > object TB_BONUS is in use
> >
> >
> > O script que estou usando é este:
> >
> > CREATE TABLE TB_BONUS
> > (
> > CD_BONUS INTEGER NOT NULL,
> > CD_SEMESTRE VARCHAR(07) CHARACTER SET NONE NOT NULL,
> > PROGRAMACAO VARCHAR(12) CHARACTER SET NONE NOT NULL,
> > QT_ALUNOS INTEGER,
> > QT_META_ALUNOS_NOVOS INTEGER,
> > CONSTRAINT "PK_BONUS" PRIMARY KEY ("CD_BONUS")
> > );
> > COMMIT;
> >
> >
> > CREATE TABLE TB_BONUS_PROFESSOR
> > (
> > CD_BONUS INTEGER NOT NULL,
> > CD_FUNCIONARIO INTEGER NOT NULL,
> > QT_ALUNOS_PROF INTEGER,
> > CONSTRAINT "PK_BONUS_PROFESSOR" PRIMARY KEY ("CD_BONUS","CD_FUNCIONARIO")
> > );
> > COMMIT;
> >
> > ALTER TABLE TB_BONUS_PROFESSOR
> > ADD CONSTRAINT FK_TB_BONUS_PROFESSOR_1 FOREIGN KEY (CD_BONUS) REFERENCES
> > TB_BONUS (CD_BONUS) ON UPDATE NO ACTION ON DELETE NO ACTION,
> > ADD CONSTRAINT FK_TB_BONUS_PROFESSOR_2 FOREIGN KEY (CD_FUNCIONARIO)
> > REFERENCES FUNCIONARIOS (CD_FUNCIONARIO) ON UPDATE NO ACTION ON DELETE NO
> > ACTION;
> > COMMIT;
> >
> >
> > Att.
> >
> > Patrícia
> >
> > ______________________________________________
> > 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
> >
>
>
>
> --
> Eduardo
> ______________________________________________
> 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
>



Mais detalhes sobre a lista de discussão lista