SERIAL type's sequence is double-called or ? - Mailing list pgsql-sql

From Aleksandr Vinokurov
Subject SERIAL type's sequence is double-called or ?
Date
Msg-id 46E154D2.8040203@gmail.com
Whole thread Raw
Responses Re: SERIAL type's sequence is double-called or ?
List pgsql-sql

Hello all,

I have a question with the SERIAL type. I want to use it for default 
identification of table entries:

create table chuwee (  num serial primary key,  mesg varchar(50) not null
);

And all the inserts to this table I'm gonna log to this table:

create table chuwee_log (  id serial primary key,  date timestamp default current_timestamp,  num integer not null,
mesgvarchar(50) not null
 
);

Logging will be done with this rule:

create or replace rule chuwee_rule as on insert to chuwee
do insert into chuwee_log (num, mesg)   values (new.num, new.mesg);


And all seems to work, but a sequence is called twice for inserts, and 
logged "num"-s get a +1 value:

sunline=# insert into chuwee (mesg) values ('Hello, world!');
INSERT 9596671 1
sunline=# insert into chuwee (mesg) values ('Aquarium full of tequilla');
INSERT 9596673 1
sunline=# select * from chuwee_log; id |            date            | num |           mesg
----+----------------------------+-----+---------------------------  1 | 2007-09-08 16:18:26.707384 |   2 | Hello,
world! 2 | 2007-09-08 16:18:58.711599 |   4 | Aquarium full of tequilla
 
(2 rows)

sunline=# select * from chuwee; num |           mesg
-----+---------------------------   1 | Hello, world!   3 | Aquarium full of tequilla
(2 rows)


How it can be cured, if any?

Best dishes,
Aleksandr.


pgsql-sql by date:

Previous
From: "frobbiani\@libero\.it"
Date:
Subject: Re: Failing join with set returning function
Next
From: Tom Lane
Date:
Subject: Re: to_date function