oracle – 如何在没有插入行时阻止插入触发器被触发?

前端之家收集整理的这篇文章主要介绍了oracle – 如何在没有插入行时阻止插入触发器被触发?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个TABLE1.在这个表上我创建了一个触发器:AFTER INSERT OR UPDATE OR DELETE

现在,如果我执行的插入没有插入任何内容,触发器仍将被触发:

insert into TABLE1 select * from TABLE1 where 1=0;

查询将插入NO ROWS,但触发器仍然被触发.

有办法避免这种情况吗?这是正常的行为吗?

解决方法

是的,这是正常行为.可以避免,但这样做需要3个触发器:

> BEFORE触发器将包布尔变量设置为FALSE
> FOR EACH ROW触发器在插入行时将变量设置为TRUE
>你有AFTER触发器,现在可以在执行动作之前检查变量的值.

听起来有点矫枉过正?也许它是:用触发器试图实现什么?

猜你在找的Oracle相关文章