Re: [SQL] Create Rule problems - Mailing list pgsql-sql

From jwieck@debis.com (Jan Wieck)
Subject Re: [SQL] Create Rule problems
Date
Msg-id m10jK8G-000EBZC@orion.SAPserv.Hamburg.dsh.de
Whole thread Raw
In response to Create Rule problems  (Doug Younger <postgres@mindspring.com>)
Responses Re: [SQL] Create Rule problems
List pgsql-sql
>
> 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

--

#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#======================================== jwieck@debis.com (Jan Wieck) #

pgsql-sql by date:

Previous
From: Engard Ferenc
Date:
Subject: Re: [SQL] Slow Inserts Leads To Unable To Dump
Next
From: "Willian Jakobs"
Date:
Subject: creating a new table with data from other tables