在一个变更集中添加值为uuid且不为null和唯一约束的列

oipij1gg  于 2021-06-18  发布在  Mysql
关注(0)|答案(0)|浏览(142)

mysql 我的数据库 user 我需要加一张table 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语法有错误;在第1行的“uuid()not null”附近,检查与您的mysql服务器版本对应的手册,以获得正确的语法
[失败的sql:alter table user add user\ U key varchar(36)default uuid()not null]
但不是吗 defaultValueComputed (或 valueComputed )他应该处理的?
当然,我可以通过编写多个变更集来创建这样的列(创建列,用 uuid() ,添加约束),但是否可以仅使用 <addColumn> 标签?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题