[firebase-br] FKs

Marcos Weimer marcosweimer em gmail.com
Qui Dez 29 16:34:12 -03 2011


Ola!

Existe uma maneira de desativar todas as FKs do banco (ou tabela) no
firebird ??

Estou fazendo a replicação de dados de um banco para outro e existe uma
ref. ciclica entre 2 tabelas,
ex:
TABELA_A
- CAMPO_AA - pk
- CAMPO_AB - pk
- CAMPO_AC - FK -> TABELA_B.CAMPO_BA

TABELA_B
- CAMPO_BA - pk
- CAMPO_BC
- CAMPO_BD
- CAMPO_BE - FK -> TABELA_A.CAMPO_AC

estou fazendo um while nas tabelas do banco, passando os registros
novos/alterados.
A situação é a seguinte....
- Insere um registro na TABELA_B informando o valor na fk (CAMPO_BE)
- insere um registro na TABELA_A informando o valor na fk (CAMPO_AC)

quando vou transferir os dados pego todos da tabela A e executo a
transferencia, depois todos da tabela B e assim sucessivamente.

Oque resolveria seria efetuar um DROP nas FKs do banco de destino, ja que
na teoria, vai ser usado apenas para consultas em caso de pane e afins, no
banco principal.
- No banco de destino, nenhuma informação sera apagada, apenas
inserida/alterada.

Não vejo uma maneira de desativar as FKs e depois de realizar o processo
reativar.

Teria de droppar e recriar depois, se esta for a solução estou literalmente
ferrado, são 1230 FKs (não foi um numero chutado, são 1230 mesmo)

As triggers desativo/ativo de forma dinamica com select nos system tables.


Alguem sabe como proceder?




-=Ma®©oS=-
Marcos R. Weimer
Puma GTE 1974 Tubarão



Mais detalhes sobre a lista de discussão lista