小编Gnu*_*fos的帖子

如何更改索引组织表的主键?

我们从一个简单的主键开始:

SQL> CREATE TABLE books(
        title VARCHAR2(10),
        CONSTRAINT pk_title PRIMARY KEY(title))
      ORGANIZATION INDEX;

Table created.
Run Code Online (Sandbox Code Playgroud)

然后意识到它不是唯一的。比如说,一本书可以以相同的标题重新发行:

SQL> ALTER TABLE books ADD(release_date DATE NOT NULL);

Table altered.
Run Code Online (Sandbox Code Playgroud)

现在要插入重新发布的书,我们必须以某种方式放松标题的唯一性。

但是由于表被索引组织,我无法删除和重新创建 PK:

SQL> ALTER TABLE books DROP PRIMARY KEY;
ALTER TABLE books DROP PRIMARY KEY
*
ERROR at line 1:
ORA-25188: cannot drop/disable/defer the primary key constraint for
index-organized tables or sorted hash cluster
Run Code Online (Sandbox Code Playgroud)

我也无法设法就地扩展现有密钥:

SQL> CREATE UNIQUE INDEX pk_title_date ON books(title, release_date);

Index created.

SQL> ALTER TABLE books MODIFY PRIMARY KEY USING …
Run Code Online (Sandbox Code Playgroud)

oracle

6
推荐指数
1
解决办法
6872
查看次数

标签 统计

oracle ×1