Re: [SQL] Create Rule problems

From: Doug Younger <postgres(at)mindspring(dot)com>
To: jwieck(at)debis(dot)com (Jan Wieck)
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] Create Rule problems
Date: 1999-05-17 17:05:25
Message-ID: 4.1.19990517130233.009504e0@proxy
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Thanks for the reply...
I had a feeling it would be a version problem.
I upgraded to 6.4.2 and both things work.

At 5/17/99 05:56 AM, Jan Wieck wrote:
>>
>> Hello,
>> I'm trying to set up some rules and was following the examples in the
>> Programmer's guide form the docs, and it gives an example similar to this:
>>
>> CREATE RULE log_shoelace AS ON UPDATE TO shoelace_data
>> WHERE NEW.sl_avail != OLD.sl_avail
>> DO INSERT INTO shoelace_log VALUES (
>> NEW.sl_name,
>> NEW.sl_avail,
>> getpgusername().
>> 'now'::text
>> );
>>
>> What I want to do is very similar:
>>
>> CREATE RULE update_login AS ON UPDATE TO user_info
>> WHERE NEW.login != OLD.login
>> DO UPDATE user_dept SET login = NEW.login
>> WHERE login = OLD.login;
>>
>> I get an error:
>> "ERROR: Table old does not exist."
>> What's going on?
>
> Which PostgreSQL release? I've just checked it with the
> current v6.5 tree and I'm sure it worked too with the v6.4.2
> released.
>
>>
>> Also, the docs say you can do multiple actions in a rule... what is the
>syntax?
>> I tried putting the actions in parens separated by semicolons or commas wit
>> no luck...
>> There wasn't an example in the docs that did more than on action.
>
> Current v6.5 tree can handle it. You have to put parens arond
> the actions and separate them with semicolon:
>
> CREATE TABLE t1 (a int4, b text);
> CREATE TABLE t2 (a int4, b text);
> CREATE TABLE t3 (a int4, b text);
>
> CREATE RULE r1 AS ON UPDATE TO t1 WHERE NEW.b != OLD.b DO (
> UPDATE t2 SET b = NEW.b WHERE t2.a = OLD.a;
> UPDATE t3 SET b = NEW.b WHERE t3.a = OLD.a;
> );
>
> This works for me.
>
>
>Jan

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Jackson, DeJuan 1999-05-17 18:03:34 RE: [SQL] Delete with AND
Previous Message David Sauer 1999-05-17 15:53:20 is there any docs for new LOCK TABLE statement ?