Liquibase предварительное условие для уникального ограничения
Я хочу добавить уникальное ограничение для столбца, используя Liquibase. Конечно, я хочу проверить, существуют ли повторяющиеся строки, используя предварительное условие.
Я придумал это:
<preConditions>
<sqlCheck expectedResult="0">
select count(*)
from person
having ( count(username) > 1 )
</sqlCheck>
</preConditions>
Однако это производит Empty set
на MySQL и, возможно, другие базы данных.
Я пытался с помощью expectedResult=""
а также expectedResult="null"
но оба не работают.
1 ответ
Решение
Вы всегда можете форсировать результат:
select
case when exists(
select username, count(*)
from person
group by username
having count(*) > 1 )
then 1
else 0
end
Это также позволяет более нормальную группу