我有一个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触发器,现在可以在执行动作之前检查变量的值.
听起来有点矫枉过正?也许它是:用触发器试图实现什么?