oracle - 从复合主键中删除一列

标签 oracle

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

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

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

最佳答案

您不需要约束名称:

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

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

关于oracle - 从复合主键中删除一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446528/

相关文章:

oracle - 如何恢复Oracle表中的数据?

java - 用于管理(身份验证/订阅更改)用户的 OPSS

java - 在 Mac 上了解 Oracle 的 Java

sql - NULL 可以像 SQL 中的 NOT NULL 一样成为约束吗?

java - 触发或多重插入

sql - 比较记录集中的 2 个连续行

oracle - 强制 Oracle 使用主键索引而不使用提示

sql - 交易内统计数据快速变化 - 修复执行计划

SQLite 函数的工作原理与 Oracle 的 "Translate"函数类似吗?

oracle - 从数据库读取整数返回 float