美文网首页
数据迁移脚本实现判断索引是否存在 并执行命令

数据迁移脚本实现判断索引是否存在 并执行命令

作者: __默默无闻 | 来源:发表于2020-07-01 17:17 被阅读0次

在开发过程中 数据库迁移的重要性 无需赘述,总之 编写migrations 是必不可少的!

编写migrations的时候,可能会遇到特定场景,例如需要判断该索引是否存在,如果存在则删除索引,如果不存在进行下一步操作。但是在mysql中,目前不知道 if exist...,下面将介绍遇到这种问题的解决方案。

//demo使用[https://github.com/pressly/goose](https://github.com/pressly/goose)包进行migration管理
-- +goose Up   
-- +goose StatementBegin
// 判断`unique_email`索引是否存在,如果存在执行alter...,不存在执行后面的内容
select if (
    exists(
        select distinct index_name from information_schema.statistics where table_name = 'user' and index_name = 'unique_email'
    )
    ,'alter table `user-user` drop index `unique_email`'
    ,'select ''index index_1 exists'' _______;') into @a;
-- +goose StatementEnd

-- +goose StatementBegin
PREPARE stmt1 FROM @a;
-- +goose StatementEnd

-- +goose StatementBegin
EXECUTE stmt1;
-- +goose StatementEnd

-- +goose StatementBegin
DEALLOCATE PREPARE stmt1;
-- +goose StatementEnd

相关文章

网友评论

      本文标题:数据迁移脚本实现判断索引是否存在 并执行命令

      本文链接:https://www.haomeiwen.com/subject/gerhqktx.html