On Thu, Nov 27, 2008 at 3:36 PM, Jaime Casanova
<[EMAIL PROTECTED]> wrote:
> On Thu, Nov 27, 2008 at 10:27 AM, Javier Chávez B. <[EMAIL PROTECTED]> wrote:
>>>
>>> Algo asi:
>>> create view bar as select * from foo;
>>>
>>> --replace * with the actual names of columns for every column you want to 
>>> affect
>>> create rule r_insert_bar as on insert to bar do instead insert into
>>> foo values (new.*);
>>> create rule r_update_bar as on update to bar do instead update foo set
>>> * = new.* where pk =old.pk;
>>> create rule r_delete_bar as on delete to bar do instead delete from
>>> where pk =old.pk;
>>
>> O sea de esta manera estoy actualizando una vista pero le indico que
>> actualice los campos fisicos que lo componen verdad??? su manera de
>> trabajo es como una especie de trigger???
>>
>
> no. una vista es un select con un nombre. no tiene campos fisicos...
> mas bien el DO INSTEAD le dice que en lugar de ejecutar la sentencia
> que tu le pasaste (ej: INSERT INTO mivista) ejecute la sentencia que
> yo le digo... es mas un re-escritor de consultas (una forma de macro
> si se quiere)

Dejame entender bien la idea ....

Alvaro dijo lo siguiente :

create view bar as select * from foo;

Tu posteaste :

>>> --replace * with the actual names of columns for every column you want to 
>>> affect
>>> create rule r_insert_bar as on insert to bar do instead insert into
>>> foo values (new.*);
>>> create rule r_update_bar as on update to bar do instead update foo set
>>> * = new.* where pk =old.pk;
>>> create rule r_delete_bar as on delete to bar do instead delete from
>>> where pk =old.pk;
 Lo que daria como resultado algo asi :

create view bar as
  select create rule r_insert_bar as   on insert   to bar do instead
insert into foo values (new.*);
            create rule r_update_bar as on update to bar do instead
update foo set  * = new.* where pk =old.pk;
            create rule r_delete_bar as on delete to bar do instead
delete from where pk =old.pk;    from foo;

La sintaxis seria esa???  ( en terminos generales por supuesto)  o
no???  y lo que haria seria para cada una de las sentencias
Insert/Delete / Update , realizar una accion en la tabla fisica... va
por ahi ???

Slds
J

-- 
Cumprimentos
jchavez
linux User #397972 on http://counter.li.org/
--
TIP 9: visita nuestro canal de IRC #postgresql-es en irc.freenode.net

Responder a