我有一个奇怪的情况,我不明白。我在合并模块中运行一个 SQL 块来更新一个 oracle 模式。我正在尝试更改几个表的主键,因此我正在执行以下步骤:
删除 FK 约束、删除 PK、删除 PK 索引(如果删除 PK 后索引仍然存在)、添加新 PK、添加 FK
这是我的问题。一切都很好,直到我们到达删除索引的部分。主索引被删除,并且(据我所知)Oracle 基于该键创建的任何索引也将立即删除。我遇到了索引持续存在的问题,所以我添加了 DROP INDEX 脚本以确保它被删除,但是,这就是发生的情况:
Alter Table TABLE1 Drop Constraint TABLE1_PK
命令运行成功
DROP INDEX TABLE1_PK
ORA-01418: 指定的索引不存在(这正是我所期望的)
ALTER TABLE TABLE1 ADD (CONSTRAINT TABLE1_PK PRIMARY KEY (TABLE_KEY) ENABLE VALIDATE)
ORA-00955: 名称已被现有对象使用(在每种情况下,该对象都是旧索引)
这当然会阻止任何 FK 链接,因为它们现在基于新密钥。当我在 TOAD 中运行它时,SQL 可以工作,但我无法弄清楚为什么它不能通过合并模块。任何人都可以帮忙吗?