RULE: ON DELETE doesn't stack deletes

Поиск
Список
Период
Сортировка
От Malcolm Hutty
Тема RULE: ON DELETE doesn't stack deletes
Дата
Msg-id 3DDBAEF5.1030401@hutty.com
обсуждение исходный текст
Ответы Re: RULE: ON DELETE doesn't stack deletes  (Rod Taylor <rbt@rbt.ca>)
Re: RULE: ON DELETE doesn't stack deletes  (Stephan Szabo <sszabo@megazone23.bigpanda.com>)
Список pgsql-bugs
According to the manual you can stack multiple queries in a RULE:

CREATE RULE name AS ON event
     TO object [ WHERE condition ]
     DO [ INSTEAD ] action

where action can be:

NOTHING
|
query
|
( query ; query ... )
|
[ query ; query ... ]


This seems to work provided 'query' is not "DELETE"; if it is, only
the first one is executed.

My installation is Postgres 7.2.2, using the binary package shipped in
Redhat 8.0

[malcolm@localhost STRUCT]$ uname -sr
Linux 2.4.18-18.8.0


Here is a test case:

CREATE TABLE A
(a_data int);

CREATE TABLE B
(b_data int);

CREATE VIEW V_AB AS
SELECT a_data,b_data FROM A,B;

CREATE RULE R_DEL_AB AS
ON DELETE TO V_AB
DO INSTEAD
(
DELETE FROM A WHERE a_data=OLD.a_data;
DELETE FROM B WHERE b_data=OLD.b_data;
);

INSERT INTO A values (1);
INSERT INTO B values (1);


test=# select * from V_AB;
  a_data | b_data
--------+--------
       1 |      1
(1 row)


test=#delete from v_ab;
DELETE 0

test=# select * from a;
  a_data
--------
(0 rows)

test=# select * from b;
  b_data
--------
       1
(1 row)

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Weber Gerhard
Дата:
Сообщение: version for sun cobalt qube 3
Следующее
От: "Tamotsu Ebina"
Дата:
Сообщение: Can't start postmaster on Cygwin with local 'ja_JP.EUC