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

Dav*_*mic 9 postgresql

我在postgresql中有一个带有复合主键的表.主键由两列命名:

DATETIME, UID
Run Code Online (Sandbox Code Playgroud)

我有一个名为ACTION的另一个(非空)列已存在于此表中.如何将ACTION添加到复合主键?即:我希望表格的结果主键是三元组:

DATETIME, UID, ACTION
Run Code Online (Sandbox Code Playgroud)

Gar*_*ett 20

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

\d my_table
Run Code Online (Sandbox Code Playgroud)

并在索引下查找类似的内容:

"my_table_pkey" PRIMARY KEY, btree (datetime, uid)
Run Code Online (Sandbox Code Playgroud)

放弃它:

alter table my_table drop constraint my_table_pkey;
Run Code Online (Sandbox Code Playgroud)

然后通过执行以下操作创建新的复合主键:

alter table my_table add constraint my_table_pkey primary key (datetime, uid, action);
Run Code Online (Sandbox Code Playgroud)

  • 在交易中! (11认同)
  • 如果还有其他表依赖它怎么办? (9认同)