From: Dmitry Tkach <dmitry@openratings.com>
To: pgsql-bugs@postgresql.org
To: pgsql-general@postgresql.org
To: pgsql-sql@postgresql.org
Subject: 'on delete' rule: bug or feature...
Date: Fri, 23 Aug 2002 13:09:20 -0400
Message-ID: <3D666C40.3060908@openratings.com> (raw)
Hi, everybody!
I was wonderring if anyone could help me with this...
I have created two tables and a view that joins them together, then I add a rule, that is supposed to
delete an entry from both tables, when I am deleting it from the view.
That does not work for some reason - it only deletes the row from one of the tables, but not from the other one...
Looks like a bug to me... Or am I doing something wrong here?
Here is the SQL (I have removed the prompts, and commented out the responses, so that you can just cut and paste this in psql):
-- First, create two tables, the view, and the 'on delete' rule:
create table x (xx int);
-- CREATE
create table y (yy int);
-- CREATE
create view xy as select * from x, y where xx=yy;
-- CREATE
create rule xy_delete as on delete to xy do instead
(
delete from x where xx=old.xx;
delete from y where yy=old.yy;
);
-- CREATE
-- Insert a row into each table:
insert into x values (1);
-- INSERT 812084785 1
insert into y values (1);
-- INSERT 812084786 1
-- Did it work?
select * from xy;
-- xx | yy
-- ----+----
-- 1 | 1
-- (1 row)
-- Great! Now delete it:
delete from xy where xx=1;
-- DELETE 0
select * from xy;
-- (No rows)
-- Looks good so far - it's gone from the view
select * from x;
-- (No rows)
-- Gone from x too - still OK, BUT:
select * from y;
-- yy
-- ----
-- 1
-- (1 row)
OOPS! How come it is still here???
Any ideas?
Your help will be greatly appreciated!
Thanks a lot!
Dima
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: dmitry@openratings.com, pgsql-bugs@postgresql.org, pgsql-general@postgresql.org
Subject: Re: 'on delete' rule: bug or feature...
In-Reply-To: <3D666C40.3060908@openratings.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox