Добавление сложного уникального ограничения в Liquibase
Я создаю таблицу ссылок, которая имеет 3 столбца; id, product_id, tournament_id.
Добавление уникальной константы в столбец "id" является тривиальным, но я хочу убедиться, что любая пара (product_id, tournament_id) уникальна.
В примере на Liquibase.org показано
<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint catalogName="cat"
columnNames="id, name"
constraintName="const_name"
deferrable="true"
disabled="true"
initiallyDeferred="true"
schemaName="public"
tableName="person"
tablespace="A String"/>
</changeSet>
но возможно ли это сделать в блоке <createTable>
?
Кроме того, просто для подтверждения; создает ли это составное уникальное ограничение в двух столбцах или создает два отдельных уникальных ограничения?
Ответы
Ответ 1
Я вполне уверен, что:
- Вы не можете делать это внутри самого тега createTable, но можете делать это в том же наборе изменений, что и при создании таблицы.
- создает составное уникальное ограничение для двух столбцов. Один из способов проверить - запустить linibase с помощью команды для генерации SQL для обновления, а не для запуска команды обновления и проверки того, что она делает для вашей базы данных. В командной строке вместо запуска
liquibase update
вы запустите liquibase updateSQL
.
Ответ 2
Вы можете прочитать Liquibase руководство и аналогичную проблему вы можете найти здесь
В вашем случае это должно быть:
<changeSet author="liquibase-docs" id="addUniqueConstraint-example">
<addUniqueConstraint
columnNames="id, product_id, tournament_id"
constraintName="your_constraint_name"
tableName="person"
/>
</changeSet>