繁体   English   中英

liquibase 自动为多数据库生成 UUID

[英]liquibase auto generate UUID for multi database

我正在尝试使用 liquibase 自动生成 UUID 作为主键。 这篇文章为我正在尝试使用的 postgresql 提供了一些想法。 Liquibase - 使用 uuid 插入行

<property name="uuid_type" value="uuid" dbms="postgresql"/>
<property name="uuid_function" value="uid.uuid_generate_v4()" dbms="postgresql"/>

<column name="id" type="${uuid_type}" defaultValueComputed="${uuid_function}">
    <constraints nullable="false" unique="true" />
</column>

但是,我需要一个解决方案来单独使用 H2 完成这项工作。 我已经看到有人建议在单独使用 h2 时使用以下内容,但它无法在列定义中共享 defaultValueComputed(我不确定是否可以将 h2 支持的 function 分配给 defaultValueComputed)

<property name="uuid_type" value="varchar(36)" dbms="h2"/>

有没有办法在 liquibase 中同时支持 Postgres 和 H2

您的部分问题是询问您是否可以在 H2 中生成 uuid 对吗? 我不是专家,但看起来你可以: http://www.h2database.com/html/functions.html#random_uuid

其次,您要问是否可以在 liquibase 中执行此操作,类似于针对 Postgres 的方式:

<property name="uuid_type" value="uuid" dbms="postgresql"/>
<property name="uuid_function" value="uid.uuid_generate_v4()" dbms="postgresql"/>

<column name="id" type="${uuid_type}" defaultValueComputed="${uuid_function}">
    <constraints nullable="false" unique="true" />
</column>

你有没有尝试过:

<property name="uuid_type" value="uuid" dbms="h2"/>
<property name="uuid_function" value="RANDOM_UUID()" dbms="h2"/>

<column name="id" type="${uuid_type}" defaultValueComputed="${uuid_function}">
    <constraints nullable="false" unique="true" />
</column>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM