这个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语句:
这个错误的原因和解决方案是什么?
参数出现的顺序很重要。
正如你在Column Definition的文档中看到的那样,语法图表显示DEFAULT
必须出现在PRIMARY KEY
之前。交换这两个部分来修复。
CREATE TABLE product_ (
pkey_ UUID DEFAULT RANDOM_UUID() PRIMARY KEY
) ;