如何在Firebird表中创建默认约束以实现自动生成UUID值
解决方案
Firebird 3.0 不支持直接在列默认约束中调用GEN_UUID()函数,但可以通过 BEFORE INSERT 触发器实现插入时自动分配UUID的需求,具体实现步骤如下:
- 首先创建包含UUID列的表
CREATE TABLE your_table ( -- 定义16字节OCTETS字符集的UUID列,设为主键 uuid_col CHAR(16) CHARACTER SET OCTETS NOT NULL PRIMARY KEY, -- 其他业务列按需添加 content VARCHAR(255) );
- 第二步创建插入前触发器实现自动生成UUID
CREATE TRIGGER trg_your_table_gen_uuid FOR your_table ACTIVE BEFORE INSERT POSITION 0 AS BEGIN -- 仅当插入操作未主动指定uuid_col的值时,才自动生成UUID IF (NEW.uuid_col IS NULL) THEN NEW.uuid_col = GEN_UUID(); END
补充说明
如果你的环境可以升级到Firebird 4.0及以上版本,无需触发器即可直接定义列默认值,语法如下:
CREATE TABLE your_table ( uuid_col CHAR(16) CHARACTER SET OCTETS DEFAULT GEN_UUID() NOT NULL PRIMARY KEY, content VARCHAR(255) );
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

