У Liquibase есть два способа определить столбец как уникальный:
При создании таблицы, используя <constraints>
в столбце:
<createTable tableName="my_table">
<column name="my_column">
<constraints unique="true"
uniqueConstraintName="my_table_my_column_uk">
</column>
</createTable>
После создания таблицы с помощью <createIndex>
:
<createTable tableName="my_table">
<column name="my_column"/>
</createTable>
<createIndex tableName="my_table" unique="true"
indexName="my_table_my_column_uk">
<column name="my_column"/>
</createIndex>
Есть ли разница между этими двумя подходами для одноколоночных уникальных ключей?
В моих собственных наблюдениях с MySQL похоже, что нет никакой разницы . Обе декларации (выше) дают одинаковый результат SHOW CREATE TABLE
:
...
UNIQUE_KEY `my_table_my_column_uk` (`my_column`)
...
Однако, верно ли это для всех реализаций базы данных или <createIndex unique="true">
генерирует различные выходные данные схемы из <constraint unique="true"/>
для разных баз данных?
Предыстория: у меня есть скрипт, который построил журнал изменений ликвидазы непосредственно из моей реляционной модели в коде. Сценарий генерации создал ОБА декларации, если модель указала, что столбец уникален. Я очищаю сгенерированные результаты и хотел бы удалить одно из объявлений, и хочу знать, подходит ли это.