![](/img/trans.png)
[英]How to fill a nullable integer column and convert it into a serial primary key in Postgresql?
[英]How to convert primary key from integer to serial?
在 Postgres 9.3 表中,我有一個integer
作為主鍵,並自動遞增,但我已經達到了integer
的最大值。 如何將其從integer
轉換為serial
?
我試過:
ALTER TABLE my_table ALTER COLUMN id SET DATA TYPE bigint;
但同樣不適用於數據類型serial
而不是bigint
。 好像我不能轉換為serial
?
serial
是一種偽數據類型,而不是實際的數據類型。 它是一個integer
下面是一些自動執行的額外 DDL 命令:
NOT NULL
和默認值以從該序列中繪制。細節:
bigserial
是相同的,圍繞bigint
列構建。 你想要bigint
,但你已經做到了。 要將現有的serial
列轉換為bigserial
(或smallserial
),您需要做的就是ALTER
列的數據類型。 序列通常基於bigint
,因此相同的序列可用於任何integer
類型。
要將bigint
“更改”為bigserial
或將integer
“更改”為serial
,您只需手動完成其余工作:
實際的數據類型仍然是integer
/ bigint
。 如果滿足serial
所有條件,一些客戶端(如 pgAdmin)將在反向工程的CREATE TABLE
腳本中顯示數據類型serial
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.