Firebird - Como localizar GENERATORS de uma tabela

Publicado por Diego em 08/04/2015

[ Hits: 11.860 ]

Blog: https://rotadev.blogspot.com/

 


Firebird - Como localizar GENERATORS de uma tabela



Após pesquisas e nenhum resultado satisfatório para minha dúvida, pesquisei e consegui construir uma QUERY para identificar os GENERATORS de uma tabela. A necessidade surgiu após ter que realizar uma manutenção no GENERATOR de uma tabela de um banco com muitas tabelas, na época tive que vasculhar um a um e identificar o GENERATOR em questão.

A primeira tabela que conheceremos é a RDB$DEPENDENCIES. Essa tabela lista o todos as dependências do banco de dados, inclusive os generators, que são utilizados para incrementar de forma automática um campo de uma tabela, muitas vezes esse campo é a chave primária. Abaixo um print da tabela:
Linux: LOCALIZAR GENERATORS DE UMA TABELA FIREBIRD
A próxima tabela é a RDB$TRIGGERS. Triggers são utilizados pelo FIREBIRD para incrementar ou mesmo decrementar um campo quando eventos como INSERT e DELETE são utilizados no banco de dados, abaixo um print da tabela.
Linux: LOCALIZAR GENERATORS DE UMA TABELA FIREBIRD
Abaixo print da QUERY que construí para facilitar a identificação, sintam-se à vontade para modificar e adaptar a QUERY segundo vossa necessidade.
Linux: LOCALIZAR GENERATORS DE UMA TABELA FIREBIRD
O campo RDB$DEPEND_ON_NAME lista os generators, por padrão o FIREBIRD acrescenta o sufixo GEN automaticamente antes de criar o generator, porém isso pode ser alterado no momento da criação do mesmo.

O campo RDB$RELATION_NAME, lista a tabela ao pertence o generator.

Os campos RDB$TRIGGER_NAME e RDB$DEPENDENT_NAME listam o trigger criado para incrementar ou decrementar o generator.

Dependendo da estrutura de nomes do banco a query terá que ser alterada.

select d.RDB$DEPENDED_ON_NAME, D.RDB$DEPENDED_ON_TYPE, t.RDB$RELATION_NAME
   from RDB$DEPENDENCIES d
   inner join RDB$TRIGGERS t on t.RDB$TRIGGER_NAME = d.RDB$DEPENDENT_NAME
   and d.RDB$DEPENDED_ON_NAME like 'GEN%'
   and t.RDB$RELATION_NAME = 'FUNCIONARIO'

Espero ter ajudado na solução de dúvidas e incidentes.

Outras dicas deste autor

Curso gratuito de JAVA

PHP - Utilizando Chainning

Livro gratuito - Linux comandos básicos e avançados

Verificando CPF com PHP

Conhecendo melhor o PHP

Leitura recomendada

Criando o hábito de ler sem gostar de ler

Unetbootin - Failed to load COM32 file menu.c32 [RESOLVIDO]

Instalar o emulador de Telnet PW3270

I InstallFest na UNISINOS

Servidor VNC no Fedora

  

Comentários
[1] Comentário enviado por madrugada em 28/04/2023 - 14:45h

Um pequeno SGBD com grandes capacidades.
Muitos desprezam o Firebird ao ver seu tamanho, mas ele é super prático e funcional.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts