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