Thread: Rule problem

Rule problem

From
"Kiarash Bodouhi"
Date:

 

Hello all

 

I tried to use following rule instead of using a default value(I want to be able to put a function instead of the constant value later on). But it keeps giving me infinite recursion error. Any ideas?

 

CREATE OR REPLACE RULE "INSERT" AS

  ON INSERT TO customer_rate where new.code is null DO INSTEAD  INSERT INTO customer_rate (prefix, rate, name, code,groupid)

  VALUES (new.prefix, new.rate, new.name,'1',new.groupid);

 

Thanking you in advance

Regards

Kia

 

Re: Rule problem

From
Tom Lane
Date:
"Kiarash Bodouhi" <kbodouhi@yahoo.com> writes:
> I tried to use following rule instead of using a default value

You can't ... at least not that way.

> (I want to be
> able to put a function instead of the constant value later on).

There's nothing stopping you from putting a function into the DEFAULT
clause.

A "BEFORE INSERT" trigger is another possible approach.

Novices often think that rules are simpler to use than triggers,
but in my experience the opposite is true.  Triggers have some
notational ugliness but the conceptual model is simple ... for
rules the notation looks easy but wrapping your head around what
will really happen is another story.

            regards, tom lane

Re: Rule problem

From
"Kiarash Bodouhi"
Date:
Thanks for the reply. I initially wanted to put the function as the default
clause. But the problem is that the function should receive one of the other
fields as the argument. Is there anyway to do that? I guess as you said I
have to use triggers.

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Sunday, October 10, 2004 4:53 PM
To: Kiarash Bodouhi
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] Rule problem

"Kiarash Bodouhi" <kbodouhi@yahoo.com> writes:
> I tried to use following rule instead of using a default value

You can't ... at least not that way.

> (I want to be
> able to put a function instead of the constant value later on).

There's nothing stopping you from putting a function into the DEFAULT
clause.

A "BEFORE INSERT" trigger is another possible approach.

Novices often think that rules are simpler to use than triggers,
but in my experience the opposite is true.  Triggers have some
notational ugliness but the conceptual model is simple ... for
rules the notation looks easy but wrapping your head around what
will really happen is another story.

            regards, tom lane