Postgresql
如何將現有類型從“bigint”更改為“bigserial”?
我有一個具有以下結構的 PostgreSQL 表:
我只需要將from更改
TYPE
為。我閱讀了文件,但無法理解如何在沒有以下錯誤的情況下合法地實現更改:prove_identity_id``bigint``bigserial``PostgreSQL said: type "bigserial" does not exist
PostgreSQL 10.1 on x86_64-apple-darwin14.5.0, compiled by Apple LLVM version 7.0.0 (clang-700.1.76), 64-bit
bigserial
是一種偽類型,一種符號方便,可在bigint
內部解析為類型 - 加上一個序列、一個列預設值、一個依賴項和一個所有權。
bigint
將具有現有行的現有列轉換為的基本命令bigserial
:CREATE SEQUENCE tbl_tbl_id_seq; ALTER TABLE tbl ALTER COLUMN tbl_id SET DEFAULT nextval('tbl_tbl_id_seq'); ALTER SEQUENCE tbl_tbl_id_seq OWNED BY tbl.tbl_id; SELECT setval('tbl_tbl_id_seq', COALESCE(max(tbl_id), 0)) FROM tbl;
setval()
與SEQUENCE
目前最高的 id 同步。替換tbl
為您的表名 (prove_identity
?)。但是,看起來您已經有了一個合適的
bigserial
列。那麼,這可能都是一個誤解。更多細節:
有關的:
在 Postgres 10 或更高版本中,考慮使用**
IDENTITY
**列作為替代: