我正在尝试定义一个列类型为 UUID ( CHAR(16) CHARACTER SET OCTETS
) 的表。通读 Firebird 3.0 开发者指南后,我发现只支持上下文变量/简单表达式/常量。我想知道是否有一种方法可以在表上定义默认约束以调用GEN_UUID()
以分配 UUID 以进行插入?
问问题
72 次
1 回答
0
您不能使用DEFAULT
子句来执行此操作,因为它只允许使用文字和 Firebird 文档中称为'context variables'的选定数量。
要执行您想要的操作,您需要创建一个插入前触发器来生成值。像这样的东西:
create trigger bi_yourtable before insert on yourtable
as
begin
new.uuid_column = gen_uuid();
end
或者,如果您不想无条件生成 UUID:
create trigger bi_yourtable before insert on yourtable
as
begin
if (new.uuid_column is null) then
begin
new.uuid_column = gen_uuid();
end
end
于 2021-10-14T08:38:14.947 回答