Domanda

I want to add a unique constraint to a column using Liquibase. Of course I want to check if duplicate rows exist using a precondition.

I came up this:

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

However this produces Empty set on MySQL and probably other databases.

I tried using expectedResult="" and expectedResult="null" but both don't work.

È stato utile?

Soluzione

You could always force a result:

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

This also allows a more normal group by/having

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top