В mysql
базе данных у меня есть таблица user
, и мне нужно добавить столбец user_key
, где значения будут вычисляться как uuid()
.Значения в этом столбце должны быть уникальными и не равными NULL.
Поэтому я написал этот набор изменений:
<changeSet id="foo" author="bar">
<preConditions>
<not>
<columnExists tableName="user" columnName="user_key"/>
</not>
</preConditions>
<addColumn tableName="user">
<column name="user_key" type="varchar(36)" defaultValueComputed="uuid()" (or valueComputed="uuid()")>
<constraints unique="true" nullable="false"/>
</column>
</addColumn>
</changeSet>
, но он завершается ошибкой со следующей ошибкой (которая кажется разумной, поскольку MySQL не позволяетработает как значения по умолчанию):
Ошибка: в синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'uuid () NOT NULL' в строке 1
[Сбой SQL: ALTER TABLE user ADD user_key VARCHAR (36) DEFAULT uuid ()NOT NULL]
Но разве defaultValueComputed
(или valueComputed
) не должен был с этим справиться?
Конечно, я могу создать такой столбец, написав несколько наборов изменений (создать столбец, обновить его значения с помощью uuid()
, добавить ограничения), но возможно ли реализовать это только с помощью тега <addColumn>
?