如何在触发器预言机中获取所有已删除或更新的行



如何在触发器中获取所有受影响的行。

在 sybase 中有一个表"已删除",它在删除和更新语句期间存储受影响行的副本

Sybase 文档

oracle 中是否有任何解决方案可以在表级触发器中执行相同的操作?

您可以在

触发器中使用newold值:

CREATE OR REPLACE TRIGGER trigger_name
  BEFORE DELETE OR UPDATE ON table_name
  FOR EACH ROW
BEGIN    
    dbms_output.put('Old: ' || :old.column);
    dbms_output.put('New: ' || :new.column);
END;
/

它与 sybase 中不同,但这就是您要找的。

在这里您可以找到更多信息。

Oracle 中,没有与我知道的"已删除"表类似的表。

根据您需要执行的操作,您可以使用复合触发器对受语句影响的行完成基于设置的操作,如 Tim Hall 的 oracle-base 站点中所述。使用此方法,您可以定义累积(例如)值或计数的行级触发器,将其存储在触发器的全局部分中,并在 AFTER INSERT|更新|删除触发器中的部分。 全局变量在所有触发点的整个持续时间内保持定义。

但是,当触发器变得如此复杂时,我不太喜欢基于触发器的解决方案,而是将代码放在应用程序包/过程/函数中。

最新更新