2015-01-28 7 views
7

Я создаю таблицу ссылок, которая имеет 3 столбца; id, product_id, tournament_id.Добавление сложного уникального ограничения в Liquibase

Добавление уникальной константы в столбец «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> блока?

Также, для подтверждения; это создает составное уникальное ограничение на двух столбцах или создает два отдельных уникальных ограничения?

ответ

5

Я почти уверен, что:

  1. Вы не сделать это внутри самого CreateTable тега, но вы может сделать это в той же ревизией, как когда стол создано.
  2. Это делает создает составное уникальное ограничение для двух столбцов. Один из способов проверить - запустить linibase с помощью команды для генерации SQL для обновления, а не для запуска команды обновления и проверки того, что она делает для вашей базы данных. В командной строке вместо запуска liquibase update вы запустите liquibase updateSQL.
0

Вы можете прочитать LiquiBase manual также аналогичной проблемы, которую вы можете найти here

В вашем случае это должно быть:

<changeSet author="liquibase-docs" id="addUniqueConstraint-example"> 
<addUniqueConstraint 
     columnNames="id, product_id, tournament_id" 
     constraintName="your_constraint_name" 
     tableName="person" 
     /> 
</changeSet> 
Смежные вопросы