You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建带条件的After Insert触发器:自动填充空GUID字段

Oracle After Insert触发器自动填充空GUID字段

首先修正你的建表语句(Oracle语法使用圆括号而非大括号):

CREATE TABLE guiddata (
    ID INT,
    GUID RAW(16)
);

以下是满足需求的After Insert触发器实现:

CREATE OR REPLACE TRIGGER trg_guiddata_fill_guid
AFTER INSERT ON guiddata
FOR EACH ROW
WHEN (NEW.GUID IS NULL)
BEGIN
    UPDATE guiddata
    SET GUID = SYS_GUID()
    WHERE ID = :NEW.ID;
END;
/

关键说明:

  • 触发器为行级触发器(FOR EACH ROW),逐行处理插入操作
  • WHEN (NEW.GUID IS NULL)过滤条件确保只处理GUID为空的新记录
  • SYS_GUID()生成的16字节RAW值完美匹配表中GUID字段的类型定义
  • 通过:NEW.ID精准定位刚插入的目标记录,避免影响其他数据

测试示例:

执行仅指定ID的插入语句(GUID留空):

INSERT INTO guiddata (ID) VALUES (2);

查询时可通过RAWTOHEX()将RAW类型的GUID转为可读字符串:

SELECT ID, RAWTOHEX(GUID) AS GUID FROM guiddata;

此时ID=2的记录会自动填充系统生成的GUID值。

内容的提问来源于stack exchange,提问作者meha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:52:41