Firebird - Como localizar GENERATORS de uma tabela

Publicado por Diego em 08/04/2015

[ Hits: 11.809 ]

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

PHP - Utilizando Chainning

Interface gráfica para configuração do SAMBA

Universidade Linux - Dicas sobre Linux

Configurando o charset de suas páginas Web

Formatos de vídeo na WEB

Leitura recomendada

Bloqueando tentativas de acesso indevido ao SSH com DenyHosts no Slackware Linux

Configurando rota para endereço multicast

Segurança da Informação

Razor QT um novo desktop leve

Instalação do PHP + MySQL + Apache + PHPMyAdmin e resolvendo problemas

  

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