Wil*_*ill 19 postgresql index primary-key
我知道如何在表中创建主键,但如何将现有索引设为主键?我正在尝试将现有表从一个数据库复制到另一个数据库。当我显示表格时,底部的索引是这种形式:
"my_index" PRIMARY KEY, btree (column1, column2)
Run Code Online (Sandbox Code Playgroud)
我已经创建了索引:
CREATE INDEX my_index ON my_table (column1, column2)
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使它成为主键......
更新:我的服务器版本是 8.3.3
gbn*_*gbn 25
您将使用 ALTER TABLE 添加主键约束。在 Postgres 中,您可以使用“ ALTER TABLE .. ADD table_constraint_using_index”形式“提升”索引
注意,主键的索引当然必须是唯一的
ALTER TABLE my_table
ADD CONSTRAINT PK_my_table PRIMARY KEY USING INDEX my_index;
Run Code Online (Sandbox Code Playgroud)
Cra*_*ein 10
我认为在那个版本的 postgresql 中不可能将索引转换为主键。
我只想删除现有索引并使用您指定的列创建主键。:
DROP INDEX my_index;
ALTER TABLE ONLY my_table ADD CONSTRAINT pk_my_table PRIMARY KEY(column1,column2);
Run Code Online (Sandbox Code Playgroud)
在 7.4 和 8.4 中工作