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

Patricia Aparecida Ayres patricia.ayres em bol.com.br
Qua Jun 19 09:32:55 -03 2013


Amilcar,
 


A Tabela TB_BONUS_PROFESSOR está sendo criada imediatamente após a criação da TB_BONUS. 
 
Existe uma aplicação feita por terceiros que fica acessando constantemente o banco de dados e não tenho como parar a aplicação.
 
Tenho que enviar o script criando as tabelas para vários clientes.

 
Pesquisando pela internet vi que para a criação de Foreign Key pelo menos para versão 1.5 do Firebird e versões anteriores, é requerido acesso exclusivo ao banco de dados.

 
Não sei o  que fazer para resolver o problema. 

 
 
 

Em 18/06/2013 18:03, INFOSOL < contato em infosol.eti.br > escreveu:
 Patricia.

 Basicamente é o que mensagem está avisando. A tabela TB_BONUS está aberta por alguém ou até por você mesma.
 Já que ela está envolvida no foreign, tem que estar sem uso.
 Feche todas as conexões e tente que dá certo.

 Amilcar





----- Original Message ----- 
From: "Patricia Aparecida Ayres" <patricia.ayres em bol.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Tuesday, June 18, 2013 5:30 PM
Subject: Re: [firebase-br] Criação de Foreign Key


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 


______________________________________________
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