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

ale*_*xtc 4 sql postgresql parse-platform postgresql-9.5 parse-server

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

objectId (text with fixed 10 characters),
item_id (integer),
item_name (text with various length)
Run Code Online (Sandbox Code Playgroud)

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

Tim*_*sen 5

您可以尝试制作item_id专栏SERIAL。我不知道是否可以更改当前item_id列以使其串行,因此我们可能必须删除该列然后将其添加回来,如下所示:

ALTER TABLE yourTable DROP COLUMN item_id;
ALTER TABLE yourTable ADD COLUMN item_id SERIAL;
Run Code Online (Sandbox Code Playgroud)

如果列中已经有数据item_id,从串行的角度来看它可能没有意义,因此希望删除它不会有什么坏处。


Lau*_*lbe 5

添加带有序列的默认值:

CREATE SEQUENCE mytable_item_id_seq OWNED BY mytable. item_id;
ALTER TABLE mytable ALTER item_id SET DEFAULT nextval('mytable_item_id_seq;
Run Code Online (Sandbox Code Playgroud)

要使该工作正常进行,您必须item_id从所有INSERT语句中排除该列,因为仅当未为该列指定任何值时才使用默认值。