Quem está fazendo o alter table? Você ou um Hibernate?
O Firebird somente deixa que você execute alter table se existir apenas uma conexão ativa. Pelo menos comigo e com o FB 1.5 é assim que funciona.
Além disso, em ambiente de produção provavelmente você usa um pool de conexões, o que pode corroborar para a existência de multiplas conexões.
Voltando ao exemplo do hibernate, se você utiliza-o com C3PO para gerenciar as conexões e se quem altera a base é o hbm2dll há uma solução fácil para o problema. Altere o número mínimo de conexões ativas do c3PO para 1.
D
danielqueiroz
Não cara, não estou usando o hibernate para fazer o alter table! Estou fazendo direto do SQL Editor do IBExpert.
O pior é que a tabela B acabou de ser criada, e o firebird diz que está em uso.
D
danielqueiroz
Já consegui fazer o alter table. O problema foi o seguinte: existe uma outra aplicação que está acessando a mesma base de dados e ela estava rodando no momento em que eu estava fazendo o alter table. Então o firebird não permite que um alter table para fazer uma FK seja efetuado.