Pular para o conteúdo

Firebird - Como localizar GENERATORS de uma tabela

Dica publicada em Linux / Introdução
Diego usrlinux
Hits: 12.884 Categoria: Linux Subcategoria: Introdução
  • Indicar
  • Impressora
  • Denunciar

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.

Conhecendo melhor o PHP

PHP - Utilizando Chainning

Formatos de vídeo na WEB

Curso gratuito de JAVA

Instalando TeamViewer no Ubuntu multiarch

Aplicando plugin Layer7 ao Debian Lenny 64 bits

Kali Linux XFCE com tela preta ao fechar tampa de notebook [Resolvido]

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

Real Player no KUbuntu 7.04

Curso básico de Linux [vídeo-aulas]

#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

Entre na sua conta para comentar.