在 H2 数据库引擎中为 UUID 类型的主键列指定默认值?
Posted
技术标签:
【中文标题】在 H2 数据库引擎中为 UUID 类型的主键列指定默认值?【英文标题】:Specify a default value for a primary key column of type UUID in H2 Database Engine? 【发布时间】:2018-09-05 00:30:04 【问题描述】:这个 SQL:
CREATE TABLE product_ (
pkey_ UUID PRIMARY KEY
) ;
...成功创建表。
但我希望新行默认为 RANDOM_UUID()
生成的 UUId,如 this Answer 所示。
CREATE TABLE product_ (
pkey_ UUID PRIMARY KEY DEFAULT RANDOM_UUID()
) ;
但这失败并出现错误:
org.h2.jdbc.JdbcSQLException:SQL 语句“CREATE TABLE PRODUCT_ ( PKEY_UUID 主键默认[*] RANDOM_UUID() ) ; "; 预期 "HASH, AUTO_INCREMENT, NOT, NULL, CHECK, REFERENCES, ,, )"; SQL 语句:
这个错误的原因和解决方法是什么?
【问题讨论】:
【参考方案1】:参数排序
参数出现的顺序很重要。
正如您在Column Definition 的文档中所见,语法图表显示DEFAULT
必须出现在PRIMARY KEY
之前。交换这两个部分来修复。
CREATE TABLE product_ (
pkey_ UUID DEFAULT RANDOM_UUID() PRIMARY KEY
) ;
【讨论】:
以上是关于在 H2 数据库引擎中为 UUID 类型的主键列指定默认值?的主要内容,如果未能解决你的问题,请参考以下文章