Thread: Problem with Rules

Problem with Rules

From
Peter Eisentraut
Date:
I am trying to create some rules for referential integrity. A generic
example:

test=> create table one (id int4, name text);

test=> create table two (ref int4, descr text);

So lets say the "ref" references the "id" and I want to ensure update and
delete cascade when table "one" is modified:

test=> create rule one_delete_cascade as on delete to one do delete from
two where ref = current.id;
ERROR:  current: Table does not exist.

test=> create rule one_update_cascade as on update to one do update two
set ref=new.id where ref=current.id;
ERROR:  current: Table does not exist.

Apparently, it recognizes the "new" pseudo-instance but not the "current"
one. Please don't tell me "current" is not yet implemented.


test=> select version();
version
--------------------------------------------------------------
PostgreSQL 6.5.0 on i686-pc-linux-gnu, compiled by gcc 2.7.2.3

Thanks.

-- 
Peter Eisentraut
PathWay Computing, Inc.



Re: [SQL] Problem with Rules

From
wieck@debis.com (Jan Wieck)
Date:
>
> I am trying to create some rules for referential integrity. A generic
> example:
>
> test=> create table one (id int4, name text);
>
> test=> create table two (ref int4, descr text);
>
> So lets say the "ref" references the "id" and I want to ensure update and
> delete cascade when table "one" is modified:
>
> test=> create rule one_delete_cascade as on delete to one do delete from
> two where ref = current.id;
> ERROR:  current: Table does not exist.
>
> test=> create rule one_update_cascade as on update to one do update two
> set ref=new.id where ref=current.id;
> ERROR:  current: Table does not exist.
>
> Apparently, it recognizes the "new" pseudo-instance but not the "current"
> one. Please don't tell me "current" is not yet implemented.
>
>
> test=> select version();
> version
> --------------------------------------------------------------
> PostgreSQL 6.5.0 on i686-pc-linux-gnu, compiled by gcc 2.7.2.3

    CURRENT has been replaced by OLD in v6.4 but still supported.
    It has been removed in v6.5 so you have to use OLD now.


Jan

--

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