在使用生产数据的副本测试某些迁移脚本(脚本与开发数据运行良好)时,我发现了一个奇怪的情况。约束已更改,因此我正在发出DROP + ADD命令:
ALTER TABLE A_DUP_CALLE
DROP CONSTRAINT A_DUP_CALLE_UK1;
ALTER TABLE A_DUP_CALLE
ADD CONSTRAINT A_DUP_CALLE_UK1 UNIQUE (
CONTROL_ID,
CALLE_AYTO_DUPL
)
ENABLE;
DROP命令工作正常,但添加命令失败。现在,我陷入了一个恶性循环。我不能删除该约束,因为它不存在(初始删除按预期方式工作):
ORA-02443:无法删除约束-不存在约束
我无法创建它,因为名称已经存在:
ORA-00955:名称已被现有对象使用
我输入A_DUP_CALLE_UK1
到SQL Developer的“ 搜索”框中,然后就可以了!所有者,表名,表景...一切都匹配:它不是具有相同名称的其他对象,这是我的原始约束。该表出现在约束详细信息中,但约束没有出现在表的详细信息中。
我的问题:
- 这有什么解释?
- 在实时服务器中进行真正的升级时,如何确保不会发生这种情况?
(服务器为10g XE,我没有足够的声誉来创建标签。)