SQL希望在更新表之前和之后记录值

时间:2012-11-01 06:45:19

标签: sql oracle oracle9i

我在这里遇到了问题。

DB:oracle 9i

我想在我的桌子上执行UPDATE脚本后保存数据更改, 在该日志中,我想将旧值与新值进行比较。

我该怎么做。

感谢您帮助我:)

3 个答案:

答案 0 :(得分:2)

编写简单的触发器,使用:OLD和:NEW你可以获得表的新旧值的值

 create or replace
 trigger tg_name
  after UPDATE ON table_name
 for each row
 BEGIN
 IF :NEW.column1 = :OLD.column1 THEN
 -- any statement 
 END IF;    
-- you can log the old and new value by inserting into log table's too..
END;

答案 1 :(得分:0)

您可以在更新后执行触发,并且可以为所需的每个字段使用:old和:new值。

答案 2 :(得分:0)

如果您只需要更新的值,可以使用RETURNING子句。

UPDATE <table> SET (c1) = (v1), (c2) = (v2), (cn) = (vn) WHERE <condition> RETURNING <expression> INTO <variables>

http://psoug.org/definition/RETURNING.htm