php - 如何为mysql创建DROP INDEX IF EXISTS?

标签 php mysql flow-framework

我想使用 IF EXISTS 选项在 mysql 中删除 INDEX,但我没有发现任何使它工作的东西。

DROP INDEX IF EXISTS index_name ON table_name;

有人有什么提示吗?

最佳答案

我没有看到任何使用IF EXISTSDROP 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/

相关文章:

php - 这是什么 : wp_nav_menu( array( 'theme_location' => 'primary' ) );

php - MySQL -PHP 插入 DATETIME

php - 显示 2 个表中的数据

javascript - Bootstrap 模式不适用于循环场景

来自 3 个表的 mysql "distinct query"在大数据上执行缓慢

c# - Dapper 或 MySql 找不到包含句号的存储过程 "."

php - 如果产品名称不存在则隐藏项目

mysql - 迁移异常: alter table --> Column already exists: 1060 Duplicate column name

mysql - 错字3流: "Result could not be converted to string" - get field content of query result

flow-framework - Neos Flow 项目的正确 .gitignore 文件?