Oracle Trigger - 更新表上的多行

时间:2011-08-22 14:16:41

标签: oracle triggers

如果我有对TableA更新执行的触发器,如果​​我在一个更新语句中更新TableA上的100条记录,是否会出现问题?我怀疑触发器会为每条记录运行100次。这是正确的还是只运行一次?我被警告说,在一个更新语句上更新多个记录可能会导致问题。

2 个答案:

答案 0 :(得分:5)

如果触发器定义为FOR EACH ROW,那么对于更新的每一行,它将触发一次,即总共100次。如果不是FOR EACH ROW,它只会触发一次。

答案 1 :(得分:2)

触发器将针对每条记录运行,但不一定会导致任何问题。当然,这取决于你的触发器做什么。

在某些情况下,您可能会使用多个触发器

  1. BEFORE UPDATE触发器初始化集合
  2. a BEFORE FOR FOR EACH ROW触发器以使用受影响记录的ID填充集合
  3. 一个AFTER UPDATE触发器,用于处理收集的ID