sql - 唯一约束的 Liquibase 前提条件

标签 sql liquibase preconditions

我想使用 Liquibase 向列添加唯一约束。当然,我想使用前提条件检查是否存在重复行。

我想出了这个:

<preConditions>
    <sqlCheck expectedResult="0">
        select count(*)
        from person
        having ( count(username) > 1 )
    </sqlCheck>
</preConditions>

但是,这会在 MySQL 和其他数据库上产生 Empty set

我尝试使用 expectedResult=""expectedResult="null" 但两者都不起作用。

最佳答案

你总是可以强制一个结果:

select 
  case when exists(
    select username, count(*)
    from person
    group by username
    having count(*) > 1 )
    then 1
    else 0
  end

这也允许通过/拥有一个更正常的组

关于sql - 唯一约束的 Liquibase 前提条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14325050/

相关文章:

c# - 如何在 Select 语句的 IN 子句中提供一串 ID,即使该列是整数

javascript - 单击时可下载文件的超链接,并为每次下载增加一个字段

MySQL:正向工程,错误 1826

postgresql - JHipster-Liquibase : How to upload an Image file blob?

mysql - Liquibase(changeLogSync,update,changeLogSyncSQL)不建表不插入数据

java - 为什么 liquibase 总是使用自己的序列?

sql - 如何通过一个请求计算玩家的多个排名?

c# - 将先决条件分组到可以接受的方法中以保持 DRY 吗?

c++ - shared_ptr 不能为空?

java - 公共(public)方法中的前置条件和后置条件检查