如果在 MYSQL 中使用 liquibase,则删除外键

Posted

技术标签:

【中文标题】如果在 MYSQL 中使用 liquibase,则删除外键【英文标题】:Drop foreign key if exists using liquibase in MYSQL 【发布时间】:2018-10-10 06:25:18 【问题描述】:

我想问一下,有没有办法只在外键约束存在时才删除它?我当前的变更集如下所示:

 <changeSet author="blabla" id="10_1_1">

    <comment>Drop FK DummyFK1</comment>

    <dropForeignKeyConstraint constraintName="DummyFK1" baseTableName="DummyToken" />

</changeSet>

谢谢!

【问题讨论】:

【参考方案1】:

您需要添加preConditionsliquibase 中有 foreignKeyConstraintExists 内置前置条件。

<changeSet id="changeSetId" author="John Doe">
    <preConditions onFail="MARK_RAN">
        <foreignKeyConstraintExists foreignKeyName="DummyFK1"/>
    </preConditions>
    <comment>Drop FK DummyFK1</comment>
    <dropForeignKeyConstraint baseTableName="DummyToken" constraintName="DummyFK1"/>
</changeSet>

【讨论】:

以上是关于如果在 MYSQL 中使用 liquibase,则删除外键的主要内容,如果未能解决你的问题,请参考以下文章

Liquibase 前置条件的 Groovy 语法是啥?

Liquibase DB 独立插入语句

Liquibase:MySQL 存储过程中的 SQL 语法错误

将 Liquibase 引入现有项目和 MySQL

Liquibase:如何在 MySQL 数据库表上设置 Charset UTF-8?

liquibase判断mysql表字段是否存在