Вы можете сделать это, но вы просто должны знать, что откат не будет работать во всех случаях.
Прежде чем углубляться в детали, рассмотрим этот мысленный эксперимент:
- Вы обновляете с 1.0.0 до 1.1.0, расширяя столбец с 30 до 33.
- добавлено много данных, но ни один не длиннее 30 символов
- можно откатить изменение, если сама база данных позволит вам - вы не указали, какой тип базы данных вы используете, так что Сама база данных позволит это неясно. Согласно этому ответу , Oracle разрешит это, если ни одна из данных не будет потеряна.
- Кто-то использует базу данных и вставляет данные в расширенный столбец, длина которого превышает 30.
- Теперь невозможно откатить это изменение без потери данных.
Поэтому, если вы используете Oracle, вы можете просто сделать так, чтобы набор изменений выглядел так:
<changSet id="widen-foo-column" author="victor">
<modifyDataType tableName="some_table" columnName="foo"
newDataType="VARCHAR2(33)"/>
<rollback>
<modifyDataType tableName="some_table" columnName="foo"
newDataType="VARCHAR2(30)"/>
</rollback>
</changeSet>