我想从复合主键中删除一列(不是从表中删除)。如果我的桌子是这样的。
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")
);
Run Code Online (Sandbox Code Playgroud)
我想将此主键更改为前三列而不删除它。因为我不知道 CONSTRAINT 名称。
小智 7
您不需要约束名称:
ALTER TABLE "scott"."xyz" DROP PRIMARY KEY;
ALTER TABLE "scott"."xyz" ADD PRIMARY KEY ("column1","column2","column3");
Run Code Online (Sandbox Code Playgroud)
但将来给你的 PK 起个名字可能是个好主意:
ALTER TABLE "scott"."xyz"
ADD CONSTRAINT pk_xyz PRIMARY KEY ("column1","column2","column3");
Run Code Online (Sandbox Code Playgroud)
我不建议使用带引号的标识符。从长远来看,你会遇到各种工具的问题。