Thread: Using a rule as a trigger.

Using a rule as a trigger.

From
Andrew Higgs
Date:
Hi all,

I have looked at some previous posting and thought that I had found 
exactly what I need. What I need is to insert an id (from a sequence) 
when a new record is inserted. The following example almost does what I 
need :

CREATE TABLE  topics (id int, topic varchar(50), descriotion text);
CREATE SEQUENCE nextid start 1;
CREATE RULE ins_topic AS ON INSERT TO topics WHERE id ISNULL DO UPDATE 
topics SET id=nextval('nextid') WHERE  id ISNULL;


This example updates the last insert. I need it to update the currnet 
insert. How do I do this?

Kind regards
Andrew Higgs



Re: Using a rule as a trigger.

From
Tulio Oliveira
Date:
Andrew Higgs wrote:
> 
> Hi all,
> 
> I have looked at some previous posting and thought that I had found
> exactly what I need. What I need is to insert an id (from a sequence)
> when a new record is inserted. The following example almost does what I
> need :
> 
> CREATE TABLE  topics (id int, topic varchar(50), descriotion text);
> CREATE SEQUENCE nextid start 1;
> CREATE RULE ins_topic AS ON INSERT TO topics WHERE id ISNULL DO UPDATE
> topics SET id=nextval('nextid') WHERE  id ISNULL;
> 
> This example updates the last insert. I need it to update the currnet
> insert. How do I do this?
> 
> Kind regards
> Andrew Higgs



Isn't better create the field "id" as "serial" instead "int" ???

this will do what you need.

-- 
======================================================
AKACIA TECNOLOGIA
Desenvolvimento de sistemas para Internet
www.akacia.com.br


Re: Using a rule as a trigger.

From
Stephan Szabo
Date:
As someone else said a serial is probably easier, but 
a trigger is probably a better bet than a rule for this purpose.
Using a plpgsql before insert trigger will do it.

On Wed, 10 Jan 2001, Andrew Higgs wrote:

> Hi all,
> 
> I have looked at some previous posting and thought that I had found 
> exactly what I need. What I need is to insert an id (from a sequence) 
> when a new record is inserted. The following example almost does what I 
> need :
> 
> CREATE TABLE  topics (id int, topic varchar(50), descriotion text);
> CREATE SEQUENCE nextid start 1;
> CREATE RULE ins_topic AS ON INSERT TO topics WHERE id ISNULL DO UPDATE 
> topics SET id=nextval('nextid') WHERE  id ISNULL;
> 
> 
> This example updates the last insert. I need it to update the currnet 
> insert. How do I do this?