如何使用 UUID 作为 HSQLDB 列的默认值

Posted

技术标签:

【中文标题】如何使用 UUID 作为 HSQLDB 列的默认值【英文标题】:How to use UUID as a default value for HSQLDB column 【发布时间】:2013-01-09 16:15:17 【问题描述】:

我正在使用 HSQLDB 进行内存数据库测试,并且在使用 UUID 作为主键时遇到了问题。我希望我的主键由数据库生成。生成的 UUID 不必是真正的 uuid,它只需要转到 varchar 列即可。

我已经尝试过根据本文档应该存在的 UUID 函数:http://hsqldb.org/doc/guide/builtinfunctions-chapt.html

alter table owner alter column id set default UUID();

但它只是说 UUID 是意外令牌。

有什么线索吗?

【问题讨论】:

【参考方案1】:

您可以对 UUID 列值使用触发器。

CREATE TABLE OWNER ( ID BINARY(16) DEFAULT X'' PRIMARY KEY , VAL VARCHAR(10))
CREATE TRIGGER TRIG BEFORE INSERT ON OWNER REFERENCING NEW ROW AS NEW FOR EACH ROW SET NEW.ID = UUID();

注意该列需要一个默认值,但是这个默认值会被 UUID() 覆盖

【讨论】:

谢谢,这行得通。尽管如果您不删除 ROW 单词,“OWNER REFERENCING NEW ROW AS NEW”将不起作用

以上是关于如何使用 UUID 作为 HSQLDB 列的默认值的主要内容,如果未能解决你的问题,请参考以下文章

HSQLDB - 为啥我不能将默认值设置为 -1

在 laravel 迁移中使用 UUID 作为默认值

Django 2.2 + UUID 作为 ID + 默认值

如何在 Postgres 中为 UUID 主键列设置默认值?

VueJS - 函数的结果作为 Prop 的默认值

通过注解指定 HSQLDB 身份的初始值