簡體   English   中英

如何將主鍵從整數轉換為串行?

[英]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 命令:

  1. 創建一個序列(默認名稱匹配)。
  2. 設置列NOT NULL和默認值以從該序列中繪制。
  3. 使列“擁有”序列。

細節:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM