如何在提交之前获取以前的数据?

时间:2014-06-23 12:59:26

标签: sql oracle

有没有办法在当前更改之前和提交更改之前获取特定表中的先前值,并且在备份表中没有存储数据。

也许这样会更清楚:

  • 第1阶段:更改表X中的数据而不提交
  • 第2阶段:在第1阶段之前获取数据而不将其存储在备份文件夹中
  • 第3阶段:提交第1阶段的更改。

2 个答案:

答案 0 :(得分:0)

根据您的交易设计方式,您可以将逻辑置于触发器中。触发器可以访问旧值和新值。有关详细信息,请参阅Oracle Documentation(:old和:new)。

CREATE OR REPLACE TRIGGER test_trigger
  BEFORE DELETE OR UPDATE ON test_table
  FOR EACH ROW

BEGIN
    INSERT INTO backup_table (col1, col2) VALUES (:old.col1, :old.col2);
END;

答案 1 :(得分:0)

RETURNING上的

The UPDATE条款应该可以为您执行此操作。不幸的是,我不知道用于引用之前值的Oracle语法(在PostgreSQL中这将是OLD.column_name),但文档使它听起来好像您的需求得到支持。