Добавить столбец со значениями в качестве UUID с ненулевыми и уникальными ограничениями в одном наборе изменений - PullRequest
0 голосов
/ 08 ноября 2018

В 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>?

...