Postgresql

如何將 PostgreSQL 10 標識列添加到現有表?

  • March 13, 2018

我正在閱讀新的Postgres 10 標識列,並看到它是如何用於SERIALCREATE TABLE.

是否也可以向現有表添加標識列?

例如,對於舊SERIAL列,我可以這樣做:

ALTER TABLE sourceTable ADD  COLUMN ogc_fid SERIAL;

對於身份列,是否有與上述相同的內容?我試過:

ALTER TABLE sourceTable ADD  COLUMN ogc_fid GENERATED BY DEFAULT AS IDENTITY;

但出現錯誤:

錯誤:“BY”第 1 行或附近的語法錯誤:…R TABLE sourceTable ADD COLUMN ogc_fid GENERATED BY DEFAULT

我正在考慮用我的腳本中的SERIAL列替換列IDENTITY,只是想檢查這是否可行。

您也需要聲明列的類型(INTBIGINTSMALLINT):

ALTER TABLE sourceTable 
   ADD COLUMN ogc_fid int                -- int or bigint or smallint
       GENERATED BY DEFAULT AS IDENTITY;

還要確保使用最新的點版本。由於IDENTITY最近才添加,因此在 Postgres 10.2 之前存在影響此特定命令的錯誤。請參閱: 如何將 PostgreSQL 10 標識列添加到包含行的現有表中?

引用自:https://dba.stackexchange.com/questions/198777