Dê uma olhada no projeto DBI-Link do David Fetter:

http://pgfoundry.org/projects/dbi-link/

Ele usa o conceito de visões atualizáveis para alterar informações
contidas em outros SGBDs. Só pra exemplificar, veja isso:

sefa=# \d rhcalculo.conta
       Visão "rhcalculo.conta"
  Coluna   |  Tipo   | Modificadores
-----------+---------+---------------
 num_conta | numeric |
 cod_ag    | numeric |
 saldo     | numeric |
Definição da visão:
 SELECT conta_sel.num_conta, conta_sel.cod_ag, conta_sel.saldo
   FROM rhcalculo.conta_sel() conta_sel(num_conta, cod_ag, saldo);
Regras:
 conta_delete AS
    ON DELETE TO rhcalculo.conta DO INSTEAD  INSERT INTO
rhcalculo.conta_shadow (iud_action, old_num_conta, old_cod_ag,
old_saldo, new_num_conta, new_cod_ag, new_saldo)
  VALUES ('D'::bpchar, old.num_conta, old.cod_ag, old.saldo,
NULL::numeric, NULL::numeric, NULL::numeric)
 conta_insert AS
    ON INSERT TO rhcalculo.conta DO INSTEAD  INSERT INTO
rhcalculo.conta_shadow (iud_action, old_num_conta, old_cod_ag,
old_saldo, new_num_conta, new_cod_ag, new_saldo)
  VALUES ('I'::bpchar, NULL::numeric, NULL::numeric, NULL::numeric,
new.num_conta, new.cod_ag, new.saldo)
 conta_update AS
    ON UPDATE TO rhcalculo.conta DO INSTEAD  INSERT INTO
rhcalculo.conta_shadow (iud_action, old_num_conta, old_cod_ag,
old_saldo, new_num_conta, new_cod_ag, new_saldo)
  VALUES ('U'::bpchar, old.num_conta, old.cod_ag, old.saldo,
new.num_conta, new.cod_ag, new.saldo)

sefa=# \d rhcalculo.conta_shadow
       Tabela "rhcalculo.conta_shadow"
    Coluna     |     Tipo     | Modificadores
---------------+--------------+---------------
 iud_action    | character(1) |
 old_num_conta | numeric      |
 old_cod_ag    | numeric      |
 old_saldo     | numeric      |
 new_num_conta | numeric      |
 new_cod_ag    | numeric      |
 new_saldo     | numeric      |
Gatilhos:
    conta_shadow_trg BEFORE INSERT ON rhcalculo.conta_shadow FOR EACH
ROW EXECUTE PROCEDURE dbi_link.shadow_trigger_func('5')


-- 
Rodrigo Hjort
http://icewall.org/~hjort

CELEPAR - Cia de Informática do Paraná
http://www.pr.gov.br


2006/11/14, Pablo Souza Grigoletti <[EMAIL PROTECTED]>:
> Olá pessoal,
>
> Gostaria de saber como criar a ilusão de uma visão (VIEW) atualizável
> definindo-se regras (RULES) para ON INSERT, ON UPDATE e ON DELETE?
>
> Esse assunto é abordado no manual do PostgreSQL [1], no entanto nenhum
> exemplo é apresentado.
>
> Alguém teria um exemplo do uso de RULES para criar a tal "visão
> atualizável"?
>
> Obrigado.
>
> Pablo
>
> #-------
>
> [1] http://www.htmlstaff.org/postgresqlmanual/sql-createrule.html
>
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a