如果索引存在,你如何删除索引?
看起来很简单,但我确实在网上找到了什么.这个想法只有在它存在时才删除它,因为如果不存在,我将会出错并且我的进程停止.
我发现这是为了查找索引是否存在:
select index_name
from user_indexes
where table_name = 'myTable'
and index_name='myIndexName'
Run Code Online (Sandbox Code Playgroud)
但我不知道怎么把它放在一起
DROP INDEX myIndexName
Run Code Online (Sandbox Code Playgroud)
Sam*_*uel 61
不要检查是否存在.如有必要,尝试删除并捕获异常...
DECLARE
index_not_exists EXCEPTION;
PRAGMA EXCEPTION_INIT (index_not_exists, -1418);
BEGIN
EXECUTE IMMEDIATE 'drop index foo';
EXCEPTION
WHEN index_not_exists
THEN
NULL;
END;
/
Run Code Online (Sandbox Code Playgroud)
Ult*_*mit 29
DECLARE
COUNT_INDEXES INTEGER;
BEGIN
SELECT COUNT ( * )
INTO COUNT_INDEXES
FROM USER_INDEXES
WHERE INDEX_NAME = 'myIndexName';
-- Edited by UltraCommit, October 1st, 2019
-- Accepted answer has a race condition.
-- The index could have been dropped between the line that checks the count
-- and the execute immediate
IF COUNT_INDEXES > 0
THEN
EXECUTE IMMEDIATE 'DROP INDEX myIndexName';
END IF;
END;
/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
71657 次 |
| 最近记录: |