Re: [SQL] Create Rule problems

Поиск
Список
Период
Сортировка
От jwieck@debis.com (Jan Wieck)
Тема Re: [SQL] Create Rule problems
Дата
Msg-id m10jK8G-000EBZC@orion.SAPserv.Hamburg.dsh.de
обсуждение исходный текст
Ответ на Create Rule problems  (Doug Younger <postgres@mindspring.com>)
Ответы Re: [SQL] Create Rule problems
Список 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 по дате отправления:

Предыдущее
От: Engard Ferenc
Дата:
Сообщение: Re: [SQL] Slow Inserts Leads To Unable To Dump
Следующее
От: "Willian Jakobs"
Дата:
Сообщение: creating a new table with data from other tables