6

我想从复合主键中删除一列(不要从表中删除)。如果我的桌子是这样的。

create table "scott"."xyz"(
   "column1" not null,
   "column2" not null,
   "column3" not null,
   "column4" not null,
   "column5" not null,
   "column6",
    CONSTRAINT PRIMARY KEY ("column1","column2","column3","column4")
);

我想将此主键更改为前三列而不删除它。因为我不知道约束名称。

4

1 回答 1

5

您不需要约束名称:

 ALTER TABLE "scott"."xyz" DROP PRIMARY KEY;
 ALTER TABLE "scott"."xyz" ADD PRIMARY KEY ("column1","column2","column3");

但是以后给你的PK起个名字可能是个好主意:

 ALTER TABLE "scott"."xyz" 
   ADD CONSTRAINT pk_xyz PRIMARY KEY ("column1","column2","column3");

而且我不建议使用带引号的标识符。从长远来看,您将遇到各种工具的问题。

于 2012-07-12T07:06:37.170 回答