This is a discussion on SERIAL type's sequence is double-called or ? within the pgsql Sql forums, part of the PostgreSQL category; --> Hello all, I have a question with the SERIAL type. I want to use it for default identification of ...
| |||||||
| Register | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| ||||
| 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, mesg varchar(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. ---------------------------(end of broadcast)--------------------------- TIP 6: explain analyze is your friend |
| ||||
| Aleksandr Vinokurov wrote: > > 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); Don't do logging with rules, do logging with triggers. See mailing-list archives for details. -- Richard Huxton Archonet Ltd ---------------------------(end of broadcast)--------------------------- TIP 4: Have you searched our list archives? http://archives.postgresql.org |