我想在
mysql中使用选项IF EXISTS进行DROP INDEX,但我发现没有任何东西可以使它工作.
DROP INDEX IF EXISTS index_name ON table_name;
有人有任何暗示吗?
最佳答案 我没有看到任何使用IF EXISTS直接进入DROP INDEX的方法.
作为一种解决方法,我编写了以下过程,这对我有用.
CREATE PROCEDURE `DropIndexIfExists`(
IN i_table_name VARCHAR(128),
IN i_index_name VARCHAR(128)
)
BEGIN
SET @tableName = i_table_name;
SET @indexName = i_index_name;
SET @indexExists = 0;
SELECT
1
INTO @indexExists FROM
INFORMATION_SCHEMA.STATISTICS
WHERE
TABLE_NAME = @tableName
AND INDEX_NAME = @indexName;
SET @query = CONCAT
(
'
DROP INDEX ',@indexName,' ON ', @tableName,'
'
);
IF @indexExists THEN
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END