在 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>
标签?
暂无答案!
目前还没有任何答案,快来回答吧!