我想使用选项IF EXISTS在MySQL中删除INDEX,但是我没有发现任何使它成功的东西。如何为mysql制作DROP INDEX IF EXISTS?
DROP INDEX IF EXISTS index_name ON table_name;
任何人有任何提示吗?
我想使用选项IF EXISTS在MySQL中删除INDEX,但是我没有发现任何使它成功的东西。如何为mysql制作DROP INDEX IF EXISTS?
DROP INDEX IF EXISTS index_name ON table_name;
任何人有任何提示吗?
我没有看到任何直接转到DROP INDEX
使用IF EXISTS
。 作为一种解决方法,我编写了以下过程,它适用于我。
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
你可以把'SET @query ...'放在'IF'中。 Nitpick,但为什么它会运行? :p – Drew
试试这个,
create procedure DeleteIndex()
begin
IF EXISTS (SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'TableName'
AND INDEX_NAME = 'IndexName' AND INDEX_SCHEMA='DbName') THEN
ALTER TABLE TableName DROP index THead2;
END IF;
END
类似的问题:http://stackoverflow.com/questions/2480148/how-can-i-employ-if-exists-for-creating-or-dropping -in-index-in-mysql – 1000111