Thread: rule problem

rule problem

From
Date:
I created the following tables :
test=> create table updatableArchivable ( pk serial, dateupdate timestamp
default current_timestamp, code char(10));
test=> create view tbl_vw as select code from updatableArchivable;
test=> create table archive ( pk int, dateupdate timestamp, code char(10),
dateend timestamp default current_timestamp);

My aim is to make some test to see the best way to solve archiving &
presenting things simply.
I currently could have the code on updatableArchivable unique for all
safetyness.

Now I created a rule so the user can update the VIEW, as follow :
test=> create rule tbl_vw_insert as
test-> on insert to tbl_vw
test-> do instead
test->  insert into updatablearchivable (code) values (new.code);

This one works !

Now I want to be able to UPDATE the view & automatically generate an
archiving of the old value into the updatableArchivable table into the
archive table.
I tried to do the following :
test=> create rule tbl_vw_update as
test-> on update to tbl_vw
test-> do instead
test-> begin work
test->   insert into archive (pk, dateupdate, code) values (old.pk,
old.dateupdate, code);

***but it generated the following ***
ERROR:  parser: parse error at or near "begin"
test=> create rule test=> select  * from father; _insert

I thought I could do smthg like :
do instead
    begin work
        Action_1;
        Action_2;
        Action_3;
    commit work

Could some one suggest a better solution ?
I have never seen what happens if I set multiple rules.
Are they applied in the order they were created ?

Much tx,

thomas,





--
Thomas SMETS
rue J. Wytsmanstraat 62
1050 Bruxelles
yahoo-id : smetsthomas




Re: rule problem

From
Jan Wieck
Date:
tsmets@brutele.be wrote:
>
> [...]
>
> I thought I could do smthg like :
> do instead
>     begin work
>         Action_1;
>         Action_2;
>         Action_3;
>     commit work
>
> Could some one suggest a better solution ?
> I have never seen what happens if I set multiple rules.
> Are they applied in the order they were created ?

    You  cannot  and  don't  need  to do BEGIN and COMMIT as rule
    actions.  Write it as

        do instead
        (
            Action_1;
            Action_2;
            Action_3;
        );

    and the actions will be perfomed in that order,  all  in  one
    and the same transaction.


Jan

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@Yahoo.com #



_________________________________________________________
Do You Yahoo!?
Get your free @yahoo.com address at http://mail.yahoo.com


Re: rule problem

From
Date:
There is only one thing I cannotprotect myself from is my own stupidity !
Tx very much to remind me that

:-))))))

thomas,


--
Thomas SMETS
rue J. Wytsmanstraat 62
1050 Bruxelles
yahoo-id : smetsthomas
----- Original Message -----
From: "Jan Wieck" <janwieck@yahoo.com>
To: <tsmets@brutele.be>
Cc: <pgsql-general@postgresql.org>
Sent: 25 March, 2002 7:48 PM
Subject: Re: [GENERAL] rule problem


> tsmets@brutele.be wrote:
> >
> > [...]
> >
> > I thought I could do smthg like :
> > do instead
> >     begin work
> >         Action_1;
> >         Action_2;
> >         Action_3;
> >     commit work
> >
> > Could some one suggest a better solution ?
> > I have never seen what happens if I set multiple rules.
> > Are they applied in the order they were created ?
>
>     You  cannot  and  don't  need  to do BEGIN and COMMIT as rule
>     actions.  Write it as
>
>         do instead
>         (
>             Action_1;
>             Action_2;
>             Action_3;
>         );
>
>     and the actions will be perfomed in that order,  all  in  one
>     and the same transaction.
>
>
> Jan
>
> --
>
> #======================================================================#
> # It's easier to get forgiveness for being wrong than for being right. #
> # Let's break this rule - forgive me.                                  #
> #================================================== JanWieck@Yahoo.com #
>
>
>
>
> _________________________________________________________
>
> Do You Yahoo!?
>
> Get your free @yahoo.com address at http://mail.yahoo.com
>
>
>
>