[firebase-br] Criar um campo em todas as tabelas e incluir info. nele sempre que atualizar algo na tabela

Sandro Souza escovadordebits em gmail.com
Ter Abr 26 16:26:24 -03 2011


Bom dia/tarde/noite Felipe.

Nobre amigo, para o primeiro caso podemos executar o seguinte código:

EXECUTE BLOCK AS
DECLARE VARIABLE TABELA VARCHAR(40);
DECLARE VARIABLE QUANT INTEGER;
BEGIN
  -- Percorre todas as tabelas que não sejam as de sistema.
  FOR SELECT RDB$RELATION_NAME FROM RDB$RELATIONS WHERE RDB$SYSTEM_FLAG <> 1
INTO :TABELA DO
  BEGIN
    -- Verifica se já consta o campo IDSYNC na tabela atual.
    SELECT COUNT(*) FROM RDB$RELATION_FIELDS WHERE(RDB$RELATION_NAME =
:TABELA)AND(RDB$FIELD_NAME = 'IDSYNC') INTO :QUANT;
    -- Ainda não consta?
    IF (QUANT = 0) THEN
      -- Cria o campo IDSYNC na tabela atual.
      EXECUTE STATEMENT 'ALTER TABLE ' || TABELA || ' ADD IDSYNC CHAR(40)';
  END
END

Para o seguindo caso, se você não desejar criar triggers, vai ter que fazer
a nível de aplicação, o que é mais vulnerável.

Dessa forma, aconselho-te a criar triggers para isso também.

Espero ter ajudado mais que atrapalhado. :D

Em 26 de abril de 2011 15:18, Fellipe Henrique <fellipe.h em uol.com.br>escreveu:

> Olá amigos,
>
> Estou precisando fazer o seguinte... tenho atualmente cerca de 200 tabelas,
> e preciso criar nelas um campo chamado "IDSYNC char(40)"
>
> Existe um meio de incluir em todas as tabelas automaticamente?
>
> Outra coisa que precisa, e que sempre no AfterUpdate de cada tabela, seja
> informado um valor pra este campo, porém não queria incluir uma Trigger em
> cada tabela, queria algo mais generico, tem como fazer isso também?
>
> Obrigado
>
> []s
> Fellipe H.
>
>
> ______________________________________________
> 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
>



Mais detalhes sobre a lista de discussão lista