在Postgres 9.3表中,我有一個integer主鍵,具有自動遞增的順序,但是我已經達到的最大值integer。怎么把它轉換integer成serial?我試過了:ALTER TABLE my_table ALTER COLUMN id SET DATA TYPE bigint;但是對于數據類型serial而不是則無效bigint。好像我無法轉換為serial?
1 回答

小怪獸愛吃肉
TA貢獻1852條經驗 獲得超1個贊
serial是偽數據類型,而不是實際數據類型。它的integer下面是一些自動執行的其他DDL命令:
創建一個序列(默認情況下具有匹配名稱)。
設置列NOT NULL和默認值以從該序列中繪制。
使列“擁有”序列。
細節:
安全,干凈地重命名使用Postgres中的串行主鍵列的表?
A bigserial相同,圍繞一bigint列構建。您想要bigint,但您已經實現了。要將現有的serial列轉換為bigserial(或smallserial),您要做的就是ALTER列的數據類型。序列通常基于bigint,因此相同的序列可用于任何integer類型。
要將a更改bigint為bigserial或將integera 更改為serial,您只需手動完成其余工作即可:
為字段創建PostgreSQL序列(不是記錄的ID)
實際的數據類型仍然是integer/ bigint。如果滿足a的所有條件,則諸如pgAdmin之類的某些客戶端將serial在反向工程CREATE TABLE腳本中顯示數據類型serial。
- 1 回答
- 0 關注
- 424 瀏覽
添加回答
舉報
0/150
提交
取消