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

时间:2018-09-05 00:30:04

标签: primary-key h2 uuid create-table

此SQL:

CREATE TABLE product_ ( 
    pkey_ UUID PRIMARY KEY
) ; 

…成功创建了一个表。

但是我希望新行默认为RANDOM_UUID()上显示的this Answer生成的UUId。

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 个答案:

答案 0 :(得分:0)

参数排序

参数出现的顺序很重要。

如您在Column Definition的文档中所见,语法图显示DEFAULT必须出现在PRIMARY KEY之前。交换这两个部分即可修复。

CREATE TABLE product_ ( 
    pkey_ UUID DEFAULT RANDOM_UUID() PRIMARY KEY 
) ;