Firebird - Como localizar GENERATORS de uma tabela

Publicado por Diego em 08/04/2015

[ Hits: 3.098 ]

Blog: http://www.vivaolinux.com.br/~usrlinux

 


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

Formatos de vídeo na WEB

Interface gráfica para configuração do SAMBA

Case e concatenação no SQL - Ajuste de ordem ou posição na tabela

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

Automatizando testes de software com Sakulix

Leitura recomendada

Remover Exim4

Instalando fontes do Windows no Linux de maneira simples

BIND 9 DNS no Debian Squeeze/Wheezy e Ubuntu 12/13 (Compativel com Active Directory no Windows Server)

Data e Hora em Servidores Linux Debian

Permissões e privilégios no Linux

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts