Postgresql

如何將現有類型從“bigint”更改為“bigserial”?

  • August 4, 2021

我有一個具有以下結構的 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**列作為替代:

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