在Oracle触发器中使用多序列生成唯一标识的实现
Oracle触发器实现EQ表按设备类型自动生成带前缀的唯一eq_id
我帮你整理好了适配需求的触发器代码,完全符合你对AFM用户EQ设备表的要求:
CREATE OR REPLACE TRIGGER AFM.INV_SEQ_EQ_TOY_T BEFORE INSERT ON AFM.EQ REFERENCING NEW AS NEW OLD AS OLD FOR EACH ROW WHEN (new.antenna_foot_number in (-1,1,2,3,4)) BEGIN IF :new.antenna_foot_number = -1 THEN -- 非天线设备:生成以'E'为前缀的唯一ID :new.eq_id := 'E'|| INV_SEQ_EQ_TOY.nextval; ELSE -- 天线设备(1-4号):生成以'A'为前缀的唯一ID :new.eq_id := 'A'|| INV_SEQ_EQ_ANTENNA_TOY.nextval; END IF; END; /
关键逻辑说明
- 触发规则:这是行级前置触发器,仅在向
AFM.EQ表插入数据时触发,且只处理antenna_foot_number为-1、1、2、3、4的记录 - 非天线设备处理:当
antenna_foot_number=-1时,调用INV_SEQ_EQ_TOY序列获取下一个值,拼接前缀'E'作为eq_id - 天线设备处理:当
antenna_foot_number为1-4时,调用INV_SEQ_EQ_ANTENNA_TOY序列获取下一个值,拼接前缀'A'作为eq_id
内容的提问来源于stack exchange,提问作者comitatenses
相关产品推荐
相关产品推荐

