Oracle触发器实现循环操作(oracle触发器循环)
Oracle触发器可以实现一定的业务自动处理,在某些需求下,我们可以使用触发器实现循环操作需求。
一、定义触发器
触发器除了可以用来处理INSERT、UPDATE、DELETE动作,还可以进行自循环处理:
“` sql
CREATE OR REPLACE TRIGGER ForTrigger
BEFORE INSERT ON test
FOR EACH ROW
BEGIN
IF(:NEW.num=1) THEN
INSERT INTO test VALUES(:NEW.value,(:NEW.num+1));
END IF;
END;
/
二、测试结果
在上述触发器创建完成以后,我们可以进行测试,将记录添加到test表中:
``` sqlINSERT INTO test VALUES('学习触发器',1);
添加后查询test表可以得到如下记录:
value num
------------------------------- 学习触发器 1
学习触发器 2
查询结果表明,触发器成功实现了循环操作,向test表中添加了一条新纪录,num字段值为2,原有记录的num字段为1,实现了自循环。
三、注意事项
在Oracle的触发器中进行循环调用是有局限的,必须要注意新添加的记录在几条SQL语句之间不能被查询出来,否则容易导致数据库堵塞。所以在应用中,应该尽量使用其他更为可控的方法实现特定业务。