Postgresql
如何將 PostgreSQL 10 標識列添加到現有表?
我正在閱讀新的Postgres 10 標識列,並看到它是如何用於
SERIAL
在CREATE 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
,只是想檢查這是否可行。
您也需要聲明列的類型(
INT
或BIGINT
或SMALLINT
):ALTER TABLE sourceTable ADD COLUMN ogc_fid int -- int or bigint or smallint GENERATED BY DEFAULT AS IDENTITY;
還要確保使用最新的點版本。由於
IDENTITY
最近才添加,因此在 Postgres 10.2 之前存在影響此特定命令的錯誤。請參閱: 如何將 PostgreSQL 10 標識列添加到包含行的現有表中?