[firebase-br] Replicar BD
Toy Ghilardi
toyhardcore em gmail.com
Qua Abr 2 14:23:32 -03 2014
Ola Wesley,
O recurso que citaram de "replicação" que o firebird tem é o shadows que
não tem nada a ver com o que você quer.
Uma vez li um artigo que coloquei em prática que é o seguinte.
Criar uma tabela onde você vai gravar todas alterações ocorridas no banco
de dados nas tabelas que tenha interesse.
CREATE GENERATOR NEW_CHANGE_ID;
CREATE TABLE CHANGES (
CHANGE_ID INTEGER NOT NULL,
CHANGE_TYPE CHAR(1) NOT NULL,
SOURCE_KEY_FIELD VARCHAR(100) NOT NULL,
SOURCE_KEY VARCHAR(100) NOT NULL,
SOURCE_TABLE VARCHAR(100),
SOURCE_KEY_2 VARCHAR(100),
SOURCE_KEY_FIELD_2 VARCHAR(100),
TIPO CHAR(1)
);
ALTER TABLE CHANGES ADD PRIMARY KEY (CHANGE_ID);
SET TERM ^ ;
/* Trigger: CHANGES_NEWID */
CREATE OR ALTER TRIGGER CHANGES_NEWID FOR CHANGES
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
NEW.CHANGE_ID = GEN_ID(NEW_CHANGE_ID,1);
END
^
SET TERM ; ^
Depois em cada tabela que tiver interesse em replicar, tu cria uma trigger
assim:
SET TERM ^ ;
CREATE OR ALTER TRIGGER CLIENTES_REPL_INSERT FOR CLIENTES
ACTIVE AFTER INSERT POSITION 0
AS
declare variable vUser varchar(15);
BEGIN
INSERT INTO CHANGES
(CHANGE_TYPE, SOURCE_KEY_FIELD,
SOURCE_KEY, SOURCE_TABLE,USERNAME)
VALUES
('I', 'CODIGO_CLIENTE', NEW.CODIGO_CLIENTE, 'CLIENTES');
END
^
SET TERM ; ^
Bem, agora todos clientes que forem cadastrados o sistema irá registrar na
tabela changes.
Basta você criar uma aplicação que fique rodando e com base nos dados
gravados em changes, pegue os valores na tabela clientes e gere um insert
para rodar no outro banco.
Abraço!
Em 2 de abril de 2014 09:11, Wesley Oliveira <wesley em rgsystem.com.br>escreveu:
> Olá pessoal!
>
>
>
> Pesquisei um pouco na internet e achei alguns replicadores Firebird que não
> funcionaram como eu queria... Será que vocês têm alguma idéia?
>
> É o seguinte:
>
>
>
> Quero ter duas bases de dados iguais em dois locais separados. Exemplo:
>
>
>
> Vou disponibilizar o acesso ao sistema na rede interna, mas quero deixar o
> acesso Web num servidor em nuvens... Então teria a base para acesso Desktop
> em um servidor interno e a base para acesso Web no servidor em nuvem. Só
> que
> como preciso das informações de ambos acessos EM AMBOS ACESSOS, preciso que
> as bases sejam idênticas o tempo todo. Tem algum componente Delphi ou
> aplicativo que faz isso?
>
>
>
> Agradeço a atenção de todos!
>
>
> Att.
>
> Wesley Oliveira
> Programador de Sistemas de Informação
>
> RG System Informática
> Fone: +55 (27) 3727-1127
> Celular: +55 (27) 99606-0038
>
>
>
>
>
> ______________________________________________
> 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
>
--
toyhardcore em gmail.com.br
Mais detalhes sobre a lista de discussão lista