在H2数据库引擎中为UUID类型的主键列指定默认值?

问题描述 投票:0回答:1

这个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 PRIMARY KEY DEFAULT [*] RANDOM_UUID());”;预期“HASH,AUTO_INCREMENT,NOT,NULL,CHECK,REFERENCES,,,)”; SQL语句:

这个错误的原因和解决方案是什么?

primary-key h2 uuid create-table
1个回答
0
投票

Arguments ordering

参数出现的顺序很重要。

正如你在Column Definition的文档中看到的那样,语法图表显示DEFAULT必须出现在PRIMARY KEY之前。交换这两个部分来修复。

CREATE TABLE product_ ( 
    pkey_ UUID DEFAULT RANDOM_UUID() PRIMARY KEY 
) ; 
© www.soinside.com 2019 - 2024. All rights reserved.