2009/10/26 Professador de Idéias <[email protected]>:
> Tarcísio,
> como são estes stored procedures? os dados são gravados em tabelas normais?
Sim, é copiar das tabelas dos notebooks e inserir nas tabelas da
respectiva filial.
> como é que ele sabe que este dado de ser enviado e o que já foi gravado na
> filial não deve ser mandando?
> explique melhor..
Ai você deve montar um esquema para saber se uma venda é nova.
Por exemplo: Se o vendedor sai as 08:00 da filial no dia 25, todos os
registros inseridos
a partir daquela data serão novos. O vendedor poderá ficar dias fora e
quando voltar, vai inserir
no banco da filial todos os dados a partir da data de sua saída.
Criando uma stored procedure, você
pode passar como parâmetro a data em que deve começa a contar como nova venda.
Atenção!
Se o vendedor pode _*alterar*_ dados e não apenas _*incluir*_ novos, o
processo fica mais
complicado. Por exemplo:
O vendedor ao atender um cliente precisa alterar o telefone de contato dele.
Neste caso, o registro do cliente já existe na filial, então, você não
poderá inserir direto, deverá fazer um update. Mas como vai saber se
pode fazer este update? Talvez, neste tempo em que o vendedor atendia
o cliente, outra pessoa alterou outros dados deste mesmo cliente.
O update é mais problemático.
Pode ser necessário criar uma tabela intermediaria no banco para
armazenar e comparar os registros
para saber se é seguro fazer a atualização.
Sobre a procedure:
O dblink é um contrib do postgresql que lhe permite conectar a outro
banco de dados.
Então a procedure pode fazer o seguinte trabalho usando o dblink:
CREATE FUNCTION sincroniza(data_inicial date) ...
DECLARE
venda record;
BEGIN
-- conecta no banco da filial
select dblink_connect('filial', 'dbname=filial');
FOR venda IN SELECT *
FROM vendas
WHERE data > data_inicial LOOP
-- para cada venda no notebook insere na filial
select dblink_exec('filial', 'insert into vendas values ......');
END LOOP;
select dblink_close('filial');
END;
Se tiver duvidas, tente escrever um pouco mais sobre para podermos ajudar.
--
Tarcisio F. Sassara
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral