Обсуждение: Using a rule as a trigger.
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
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
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?