在Oracle中,您可以通过在CREATE TRIGGER语句中指定FOR EACH ROW子句来编写行级触发器:
CREATE TRIGGER MY_FANCY_TRIGGER BEFORE UPDATE ON MY_TABLE FOR EACH ROW BEGIN IF :OLD.my_id_column > 4 AND :NEW.some_other_column <> 'foo' THEN -- ... END IF; END;
这样的触发器允许您查看每个受影响行的前后版本(分别为:OLD和:NEW).例如,以下语句将导致此触发器对MY_TABLE中的每一行执行一次:
UPDATE MY_TABLE SET some_other_column = 'bar';
通过消除FOR EACH ROW子句,触发器将成为一个语句级触发器.这意味着它只对每个语句执行一次,而不管该语句受到多少行(如果有)).不幸的是,语句级触发器没有:OLD和:NEW变量可用(因为受影响的行数量有所不同).
解决方法
原文地址:https://www.jb51.cc/mssql/81970.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。