如何在触发器oracle

时间:2016-01-25 22:33:05

标签: sql oracle triggers oracle-apex

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

1 个答案:

答案 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) )