如何在触发器 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) )
我在 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) )