2012-01-27 23 views
1

我正在尋找一個oracle包,它將捕獲對錶的更改並將它們保存到日誌或日記表中。例如,在執行SQL語句,如Oracle的行級修訂控制?

insert into foo(x,y) values (12,34); 

將捕獲這些行動統一到一個適當的表,是這樣的:

timestamp   who  operation column value 
---------   ---  --------- ------ ----- 
12-JAN-2012 13:22 MH  insert  x   12 
12-JAN-2012 13:22 MH  insert  y   13 

如果有設施,以基於該SQL語句這將是巨大的信息

回答

1

這可以通過在插入時觸發的目標表上的簡單trigger來完成。也許這樣的事:

CREATE OR REPLACE TRIGGER foo_audit 
AFTER INSERT OR DELETE OR UPDATE ON foo 
FOR EACH ROW 
BEGIN 
    IF INSERTING THEN 
     ... 
    ELSIF UPDATING THEN 
     ... 
    ELSIF DELETING THEN 
     ... 
    END IF; 

END; 
/

這種觸發器的格式非常簡單,你可以實際上編程生成它們。