id serial

On Mon, Jun 13, 2005 at 21:58:37 +0200,
"Hortschitz, Stefan" <Stefan(dot)Hortschitz(at)lfrz(dot)at> wrote:
>
> CREATE TABLE session.preferences
> (
> id serial NOT NULL,
> name varchar(50),
> value varchar(255),
> CONSTRAINT session_preferences_pkey PRIMARY KEY (id)
> )
> WITHOUT OIDS;
> ALTER TABLE session.preferences OWNER TO web;
> --------------------------------
>
> and sometimes if i'm adding new rows to the table with statements like
> this:
> insert into (name,value) ('xy','xy');
> the database only returns an 'duplicate key on primary key', which
> should be prevented by the serial-datatype, or? how could it be, that
> two rows become the same id??
> if i execute the insert-statement again it works.
>
> the created serial-sequence looks like this:
> --------------------------------
> CREATE SEQUENCE session.preferences_id_seq
> INCREMENT 1
> MINVALUE 1
> MAXVALUE 9223372036854775807
> START 2487
> CACHE 1;
> ALTER TABLE session.preferences_id_seq OWNER TO web;
> --------------------------------
>
> what can I do against the duplicate-key problem? is it a configuration,
> sql or operating-system specific problem?

Most likely you recreated the table and reloaded it at some point without
restoring the sequence value.

What you want to do now is set the sequence to the highest value of id
in the table. Something like:
SELECT setval('preferences_id_seq',(SELECT max(id) FROM session.preferences);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值