Postgresql将现有列添加到复合主键

Postgresql将现有列添加到复合主键,postgresql,Postgresql,我在postgresql中有一个带有复合主键的表。主键由两列组成,分别命名为: DATETIME, UID 此表中已存在另一个名为ACTION的(非空)列。如何向复合主键添加操作?Ie:我希望得到的表主键是三元组: DATETIME, UID, ACTION 首先删除主键约束。您可以通过键入来获取约束的名称 \d my_table 并在索引下查找以下内容: "my_table_pkey" PRIMARY KEY, btree (datetime, uid) 通过执行以下操作放弃它: al

我在postgresql中有一个带有复合主键的表。主键由两列组成,分别命名为:

DATETIME, UID
此表中已存在另一个名为ACTION的(非空)列。如何向复合主键添加操作?Ie:我希望得到的表主键是三元组:

DATETIME, UID, ACTION

首先删除主键约束。您可以通过键入来获取约束的名称

\d my_table
并在索引下查找以下内容:

"my_table_pkey" PRIMARY KEY, btree (datetime, uid)
通过执行以下操作放弃它:

alter table my_table drop constraint my_table_pkey;
alter table my_table add constraint my_table_pkey primary key (datetime, uid, action);
然后通过执行以下操作创建新的复合主键:

alter table my_table drop constraint my_table_pkey;
alter table my_table add constraint my_table_pkey primary key (datetime, uid, action);

您需要删除并重新创建PKconstraint@horse谢谢我如何找到约束的名称?它是否有一个标准化的名称,如tablename_pkey,以实现自动化,或者我必须从与表相关的某种查询中手动推断它?在事务中!如果有其他桌子依赖它呢?