Ale*_*enz 1 sql oracle triggers oracle-apex
我正在使用 Oracle Apex 应用程序,用户可以在其中获取有关其请求的订单的信息。管理员可以编辑表格上的信息并更改订单信息,我需要保留更新哪些列的日志。我在更新后创建了一个触发器,但现在我需要获取在表格形式中编辑的列的名称。
在触发器内
IF UPDATING( 'column_name' )
Run Code Online (Sandbox Code Playgroud)
将告诉您该update语句是否实际更新了特定列。然而,根据应用程序的构建方式,无论是否实际发生更改,它很可能都会更新每一列。如果您想解释这一点,则需要比较:new和:old值。如果列不可为空
IF( :new.column_name != :old.column_name )
Run Code Online (Sandbox Code Playgroud)
如果您必须考虑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) )
Run Code Online (Sandbox Code Playgroud)