📚
MySQL 8.0で DROP INDEX IF EXIST~が使えない!
該当のインデックスが存在する場合、インデックスを削除したい
該当のインデックスが存在する場合、インデックスを削除したいというときがあった場合、
パッと思いつくのは以下のケースではないでしょうか?
DROP INDEX IF EXIST 'インデックス名'
しかし、MySQL 8.0ではその構文が使えないのです。
どうすれば良いのかというと
以下のストアドプロシージャを組んで実行してください!
ストアドプロシージャ
CREATE PROCEDURE `ストアドプロシージャ名`()
BEGIN
IF EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.STATISTICS
WHERE `TABLE_NAME` = 'テーブル名'
AND `INDEX_NAME` = 'インデックス名'
) THEN
ALTER TABLE `テーブル名` DROP INDEX `インデックス名`;
END IF;
END;
実行
CALL `ストアドプロシージャ名`();
なんと求めている動作が確認できるのです。
日本語で解説しているところがなかったので書いてみました。
お困りの方はお試しください。
Discussion