我想使用 IF EXISTS 选项在 mysql 中删除 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
关于php - 如何为mysql创建DROP INDEX IF EXISTS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39849002/