Change types — это встроенные операции Liquibase, которые абстрагируют SQL-команды и позволяют описывать изменения схемы декларативно.
Работа с таблицами
| Change Type |
Описание |
createTable |
Создание таблицы |
dropTable |
Удаление таблицы |
renameTable |
Переименование таблицы |
addColumn |
Добавление столбца |
dropColumn |
Удаление столбца |
renameColumn |
Переименование столбца |
modifyDataType |
Изменение типа данных столбца |
addNotNullConstraint |
Добавление ограничения NOT NULL |
dropNotNullConstraint |
Удаление ограничения NOT NULL |
addDefaultValue |
Установка значения по умолчанию |
Ключи и ограничения
| Change Type |
Описание |
addPrimaryKey |
Добавление первичного ключа |
dropPrimaryKey |
Удаление первичного ключа |
addForeignKeyConstraint |
Добавление внешнего ключа |
dropForeignKeyConstraint |
Удаление внешнего ключа |
addUniqueConstraint |
Добавление уникального ограничения |
dropUniqueConstraint |
Удаление уникального ограничения |
Индексы
| Change Type |
Описание |
createIndex |
Создание индекса |
dropIndex |
Удаление индекса |
Представления и последовательности
| Change Type |
Описание |
createView |
Создание представления (VIEW) |
dropView |
Удаление представления |
createSequence |
Создание последовательности |
dropSequence |
Удаление последовательности |
alterSequence |
Изменение последовательности |
SQL напрямую
| Change Type |
Описание |
sql |
Выполнение произвольного SQL |
sqlFile |
Выполнение SQL из файла |
Пример использования нескольких change types
<changeSet id="3" author="kozlov">
<addColumn tableName="users">
<column name="email" type="VARCHAR(320)">
<constraints nullable="false"/>
</column>
</addColumn>
</changeSet>
<changeSet id="4" author="kozlov">
<createIndex indexName="idx_users_email" tableName="users">
<column name="email"/>
</createIndex>
</changeSet>
<changeSet id="5" author="kozlov">
<addForeignKeyConstraint
constraintName="fk_orders_user"
baseTableName="orders"
baseColumnNames="user_id"
referencedTableName="users"
referencedColumnNames="id"
onDelete="CASCADE"
onUpdate="NO ACTION"/>
</changeSet>
На собеседовании: не нужно заучивать все типы. Достаточно знать основные категории (таблицы, столбцы, ключи, индексы, SQL) и понимать, что change types обеспечивают кроссплатформенность — один и тот же XML работает для PostgreSQL и Oracle.