我正在使用Oracle Apex应用程序,用户可以在其中获取有关所请求订单的信息。管理员可以编辑表格上的信息并更改订单信息,我需要记录哪些列已更新。我在更新后创建了一个触发器,但现在我需要获取以表格形式编辑的列的名称。
答案 0 :(得分:4)
在触发器内
IF UPDATING( 'column_name' )
将告诉您update
语句是否实际更新了特定列。但是,根据应用程序的构建方式,无论是否实际发生更改,都可能会更新每个列。如果您尝试对此进行说明,则需要比较:new
和:old
值。如果列是不可为空的
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) )