Postgresql

如何將現有索引提升為 PostgreSQL 中的主鍵

  • May 15, 2020

我知道如何在表中創建主鍵,但是如何使現有索引成為主鍵?我正在嘗試將現有表從一個數據庫複製到另一個數據庫。當我顯示表格時,底部的索引是這種形式:

"my_index" PRIMARY KEY, btree (column1, column2)

我創建了索引:

CREATE INDEX my_index ON my_table (column1, column2)

但是我不知道如何使它成為主鍵…

更新:我的伺服器版本是 8.3.3

您將使用 ALTER TABLE 添加主鍵約束ALTER TABLE .. ADD table_constraint_using_index在 Postgres 中,您可以使用“ ”表單“提升”索引

注意,對於主鍵,索引當然需要是唯一的

ALTER TABLE my_table 
   ADD CONSTRAINT PK_my_table PRIMARY KEY USING INDEX my_index;

我認為在該版本的 postgresql 中不可能將索引轉換為主鍵。

我將刪除現有索引並使用您指定的列創建主鍵。:

DROP INDEX my_index;
ALTER TABLE ONLY my_table ADD CONSTRAINT pk_my_table PRIMARY KEY(column1,column2);

在 7.4 和 8.4 中工作

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