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

PostgreSQL - create an auto-increment column for non-primary key

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

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。如何在 Create Table?

中实现这一点

您可以尝试将 item_id 列设为 SERIAL。我不知道是否可以更改当前的 item_id 列以使其连续,因此我们可能不得不删除该列然后再将其添加回去,如下所示:

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

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

添加一个带序列的默认值:

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

要实现这一点,您必须从所有 INSERT statrments 中排除 item_id 列,因为只有在没有为该列指定值时才会使用默认值。