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

22

我在PostgreSQL中有一张带有复合主键的表格。该主键由两个名为:的列组成:

DATETIME, UID

我已经有另一个(非Null)列名为ACTION存在于这个表中。我该如何将ACTION添加到复合主键中?也就是说,我希望表的结果主键是三元组:

DATETIME, UID, ACTION

4
需要删除并重新创建主键约束。 - user330315
1
@horse 谢谢。我该如何找到约束的名称 - 它是否有标准化的名称,例如 tablename_pkey,以便实现自动化,还是必须手动从与表相关的某种查询中推断出它? - David Simic
1个回答

54

首先删除主键约束。您可以通过输入以下命令获取约束名称

\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);

18
在一次交易中! - EoghanM
8
如果有其他表依赖于它怎么办? - Capan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接