[firebase-br] Atualizador de banco de dados (dados e metadados)

Kelver Merlotti kmerlotti em gmail.com
Sex Out 17 10:11:23 -03 2008


Aí vai algumas dicas:

Saber se uma procedure existe:

select * from rdb$procedures
where rdb$procedure_name = 'SUA_PROC'

Saber se uma view/table existe:

select * from rdb$relations where
rdb$relation_name = 'SUA_VIEW_OU_TABLE'

Listar as triggers ativas da base:

select * from rdb$triggers
where rdb$trigger_inactive = 0

Listar as triggers ativas por tabela:

select * from rdb$triggers
where rdb$trigger_inactive = 0 and
rdb$relation_name = 'SUA_TABELA'

Um outro item que costumo fazer é gravar a versão de uma
procedure/trigger, utilizando seu campo da descrição. Tipo, quando
gero a SP, dou um "describe" nela jogando '1.0'. Aí se preciso
alterá-la futuramente, dou um select pra pegar a descrição e comparar
se a versão é diferente. Caso sim, alter procedure:

...
DESCRIBE PROCEDURE NOME_PROC '1.0';
...
select rdb$description as VERSAO from rdb$procedures
where rdb$procedure_name = 'NOME_PROC'

if qry.FieldByName('VERSAO').AsString <> '1.0' then
  ...

Abraços!!!

2008/10/17 Zottis <zottissistemas em brturbo.com.br>:
> Bom dia, eu utilizo da seguinte forma, verifico a existência de um campo em
> certa tabela
> e se não existir, eu rodo um script com os comandos necessários para
> atualizar o banco.
> Tem dado certinho.
>
> Eu não precisei mais de ir ao cliente e nem atualizar a base de dados
> manualmente.
>
> PS: só não sei o comando para Procedures, Triggers, etc, somente para os
> campos das tabelas
>
>
>
> Zottis(TeamFB Users)
>
> Zottis Sistemas - 2008 Ano XI
> Programação Delphi/PHP/Firebird/MySQL
>
> "Um homem só tem o direito de olhar
>  a um outro de cima para baixo, quando
>  vai ajuda-lo a levantar-se".
>                  Gabriel Garcia Marquez
> ----- Original Message ----- From: "Daniel Sonda" <daniel em mhnet.com.br>
> To: "FireBase" <lista em firebase.com.br>
> Sent: Thursday, October 16, 2008 5:31 PM
> Subject: [firebase-br] Atualizador de banco de dados (dados e metadados)
>
>
> Olá lista,
>
> Estou idealizando um atualizador para banco de dados e gostaria da
> opinião de vcs sobre a seguinte dúvida:
>
> Posso, através de comandos SQL, consultar qualquer estado ou existência
> de dados ou metadados em um banco de dados Firebird, de maneira que o
> resultado dessa consulta possa ser analisado como um valor lógico
> (booleano)?
>
> Exemplos:
>  Testar a existência de trigger, stored procedures, tabelas, campos ou
> quaisquer outros itens possíveis.
>  Verificar tipo/domínio/tamanho de campos ou qualquer outro item possível.
>
> Portanto, alguém sabe ou imagina algo que não possa ser verificado
> através de instruções SELECT em tabelas do usuário ou de sistema?
>
> --
> Att.
> Daniel Sonda
> www.h2jsolucoes.com.br
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



-- 
Kelver Merlotti
Coordenador Editorial do Portal www.ActiveDelphi.com.br
Contato: kelver em activedelphi.com.br
Google: kmerlotti em gmail.com
Msn: kmerlotti em hotmail.com
Tem um segundo? Então, dá uma olhadinha nisso:
Um site de publicidades, de Portugal, está pagando em euros (quase 3x
mais que em reais) pra quem estiver disposto a:
 * Ler anúncios
 * Visitar sites
 * Clicar em banners
 * Navegar na NET
 * Ler e-mails
 * Convidar novos usuários
O pagamento é feito em cheque! Registra lá!! Não custa nada! ;-)
http://www.publipt.com/pages/index.php?refid=kmerlotti




Mais detalhes sobre a lista de discussão lista