如何在触发器 oracle 中获取更新列的名称

How to get the name of the updated columns in a trigger oracle

我在 Oracle Apex 应用程序中工作,用户可以在其中获取有关请求订单的信息。管理员可以编辑 table 上的信息并更改订单信息,我需要记录更新了哪些列。我在更新后创建了一个触发器,但现在我需要获取在表格表单中编辑的列的名称。

触发器内

IF UPDATING( 'column_name' )

会告诉您 update 语句是否实际更新了特定列。然而,根据应用程序的构建方式,它可能会更新每一列,无论是否确实发生了变化。如果您要考虑这一点,则需要比较 :new:old 值。如果列是 non-nullable

IF( :new.column_name != :old.column_name )

如果您必须考虑 null 值,它会变得有点冗长

IF( :new.column_name != :old.column_name or
    (:new.column_name is null and :old.column_name is not null) or
    (:new.column_name is not null and :old.column_name is null) )