【发布时间】:2011-02-12 22:30:21
【问题描述】:
如果索引存在,如何删除它?
看起来很简单,但我确实在网上找到了任何东西。 我们的想法是仅在它存在时才删除它,因为如果不存在,我将出错并且我的进程将停止。
我发现这个是为了查找索引是否存在:
select index_name
from user_indexes
where table_name = 'myTable'
and index_name='myIndexName'
但是我不知道怎么搭配
DROP INDEX myIndexName
【问题讨论】:
-
@Samuel's 是最正确的解决方案。恕我直言,这是应该被接受的。
-
小心 DDL 命令的隐式提交!!那个 drop 提交,无论喜欢与否。如有必要,将其包装成一个自治事务。
-
之所以没有直截了当的解决方案,是因为不应该出现这种情况。这是一个配置管理问题。
-
@APC 这就是理想世界和我们的世界的区别。出现一些你必须做“不应该做”的事情的情况。有时,这是因为之前有人做出了错误的决定。有时,是因为形势发生了变化,突然做出了一个当时好的选择,变成了坏的选择。在我看来,“它不应该发生”是永远忽略某个功能的正当理由。这可能是为更重要的问题分配资源的正当理由,但其他几种数据库技术也提供了类似
DROP IF EXISTS的功能,我很感激它的存在。