Rule problem

Поиск
Список
Период
Сортировка
От Svenn Helge Grindhaug
Тема Rule problem
Дата
Msg-id Pine.SOL.4.44.0206131208300.15638-100000@buksbom.ii.uib.no
обсуждение исходный текст
Ответы Re: Rule problem  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
Hi,

I have defined the following 3 tables (a,b,c) and 2 rules (a_delete,
c_delete) in postgres 7.2:
         Table "a"Column |  Type   | Modifiers
--------+---------+-----------id1    | integer | not null
Primary key: a_pkey
Rules: a_delete
         Table "b"Column |  Type   | Modifiers
--------+---------+-----------id1    | integer |id2    | integer |
         Table "c"Column |  Type   | Modifiers
--------+---------+-----------id2    | integer | not null
Primary key: c_pkey
Rules: c_delete

create rule a_delete as
on delete to a do
delete from b where id1 = old.id1;

create rule c_delete as
on delete to c do
delete from a where id1 = (select id1 from b where id2 = old.id2);

The tables contains the following values:

select * from c;id2
-----104105106

select * from a;id1
-----  1  2  3

select * from b;id1 | id2
-----+-----  1 | 105


The problem is that when I try to delete an entry i table c which have a
reference in table b to table a, the rule deletes the entry in table c and
table b but NOT in table a. (see output below)
Can someone please tell me why this happens and how to solve it

delete from c where id2 = 105;
DELETE 1

select * from a;id1
-----  1     <- This should also be deleted by the c_delete rule!!!  2  3

select * from b;id1 | id2
-----+-----
(0 rows)

select * from c;id2
-----104106


Thanks

Svenn Grindhaug.





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

Предыдущее
От: Richard Huxton
Дата:
Сообщение: Re: General trigger function
Следующее
От: "SDX"
Дата:
Сообщение: How to unsubscribe?