PostgreSQL-为非主键创建一个自动增量列

时间:2018-07-24 05:54:40

标签: sql postgresql parse-platform parse-server postgresql-9.5

我使用的是与开源Parse Server集成的PostgreSQL 9.5 X64。我的表具有以下结构。

objectId (text with fixed 10 characters),
item_id (integer),
item_name (text with various length)

由于使用了Parse Server,objectId是主键。它由Parse Server自动生成。 item_id不是主键。我想在创建新记录时使item_id自动增加1。在创建表中如何实现?

2 个答案:

答案 0 :(得分:3)

添加带有序列的默认值:

CREATE SEQUENCE mytable_item_id_seq OWNED BY mytable. item_id;
ALTER TABLE mytable ALTER item_id SET DEFAULT nextval('mytable_item_id_seq;

要使其正常工作,您必须从所有item_id法规中排除INSERT列,因为仅在未为该列指定任何值的情况下才使用默认值。

答案 1 :(得分:2)

您可以尝试将item_id列设为SERIAL。我不知道是否可以更改当前的item_id列使其成为串行列,因此我们可能必须删除该列然后将其重新添加,如下所示:

ALTER TABLE yourTable DROP COLUMN item_id;
ALTER TABLE yourTable ADD COLUMN item_id SERIAL;

如果item_id列中已经有数据,那么从串行角度看可能没有意义,因此希望删除它没有危害。