>>>bug背景>>>
bug来源一个定时任务的删除操作。这里需要删除原来数据,然后插入定时采集到的数据。因采集到的数据中没有id这个字段,所以插入这个过程需要借助oracle的触发器,来自动生成一个id。最终我写的触发器逻辑跟删除操作,产生冲突,所以报错。
// 以下sql 可用于插入数据自动生成id的功能,仅仅在数据库层面就可以完成
// 创建队列
CREATE SEQUENCE RM_LINK_OLT_SEQUENCE
INCREMENT BY 1
START WITH 1
NOMINVALUE
NOMAXVALUE
NOCYCLE
// 执行查看是否存在序列
select RM_LINK_OLT_SEQUENCE.NEXTVAL from dual;
// 创建触发器 (依托队列生成id)
CREATE OR REPLACE TRIGGER RM_LINK_OLT_SEQ_TRIGGER
BEFORE INSERT or UPDATE or DELETE ON RM_LINK_OLT
FOR EACH ROW
BEGIN
SELECT RM_LINK_OLT_SEQUENCE.NEXTVAL INTO :NEW.ID FROM DUAL;
END TR_FCBOOK;
// 查询触发器
select * from all_source where type='TRIGGER' AND name='RM_LINK_OLT_SEQ_TRIGGER';
// 删除触发器
drop trigger RM_LINK_OLT_SEQ_TRIGGER
>>>错误截图>>>