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

Fellipe Henrique fellipe.h em uol.com.br
Ter Abr 26 16:41:00 -03 2011


Obrigado Sandro,

Prezado Paulo, a questão minha é a seguinte.. preciso identificar quais 
registros foram modificados, e pegar o idsync e incluir em uma tabela... 
pra eu poder sincronizar somente os registros alterados.

Mas pra isso, eu não queria criar uma trigger em cada tabela.. e sim uma 
única e "vincular" em todas as tabelas..

[]s


Em 26/04/2011 16:26, Sandro Souza escreveu:
> 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
>>
> ______________________________________________
> 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