创建带条件的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
相关产品推荐
相关产品推荐

