Pular para o conteúdo

Firebird - Como localizar GENERATORS de uma tabela

Dica publicada em Linux / Introdução
Diego usrlinux
Hits: 12.883 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.

Instalando TeamViewer no Ubuntu multiarch

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

Formatos de vídeo na WEB

Configurando o charset de suas páginas Web

Universidade Linux - Dicas sobre Linux

Instalação e configuração do modem PC-TEL AMR PCI no Slackware 10.1

Wget - ótimo utilitário de downloads

Configurando o AMaViS em servidor dedicado

Resolvendo o problema do VMware Player no Ubuntu 15.04 Vivid Vervet

Configuração da placa Ati Radeon 7000 com saída RCA para TV

#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.