SERIAL type's sequence is double-called or ?

Поиск
Список
Период
Сортировка
От Aleksandr Vinokurov
Тема SERIAL type's sequence is double-called or ?
Дата
Msg-id 46E154D2.8040203@gmail.com
обсуждение исходный текст
Ответы Re: SERIAL type's sequence is double-called or ?  (Richard Huxton <dev@archonet.com>)
Список 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 по дате отправления:

Предыдущее
От: "frobbiani\@libero\.it"
Дата:
Сообщение: Re: Failing join with set returning function
Следующее
От: Tom Lane
Дата:
Сообщение: Re: to_date function