sql - 如何在 Firebird 表上创建默认约束以分配自动生成的 UUID 值
问题描述
我正在尝试定义一个列类型为 UUID ( CHAR(16) CHARACTER SET OCTETS
) 的表。通读 Firebird 3.0 开发者指南后,我发现只支持上下文变量/简单表达式/常量。我想知道是否有一种方法可以在表上定义默认约束以调用GEN_UUID()
以分配 UUID 以进行插入?
解决方案
您不能使用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
推荐阅读
- python - 编译 gstreamer (python kivy) 应用程序时出现 SDL12 错误
- r - Selenium - rsDriver(browser = "firefox") -> 连接被拒绝
- node.js - 如何在 HAPI 中从 MySQL 返回结果
- coldfusion - 如何根据coldfusion中的给定日期获取utcoffset
- github3.py - GItHub App 访问组织中的存储库
- c# - 不区分大小写的字典无法按预期工作
- ios - SwiftUI 中 ObservedObject 和 StateObject 有什么区别
- php - Laravel:密码问题未使用数据库中的哈希密码更新
- r - 如何通过循环R下载每年的数据
- java - 什么是创建常量变量和继承它们的子类的最佳实践