3

Liquibase を使用して列に一意の制約を追加したいと考えています。もちろん、前提条件を使用して重複行が存在するかどうかを確認したいと思います。

私はこれを思いついた:

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

ただし、これはEmpty setMySQLおよびおそらく他のデータベースで生成されます。

expectedResult=""andを使用してみexpectedResult="null"ましたが、どちらも機能しません。

4

1 に答える 1

7

いつでも結果を強制できます。

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

これにより、より通常の group by/having も可能になります

于 2013-01-14T19:29:46.913 に答える