我希望在表上放置触发器,将所有插入/更新的数据写入一个额外的日志文件中,以便使用外部工具进行处理。是否有实现此目标的方法?
我建议避免在DML时间写入文件系统,而应该每天(或其他频率)批量处理数据并将其提取出来。
从您的OP中,不清楚您是否需要更新后的“新”数据还是更新前的“旧”数据。如果您只需要最新数据,为什么不添加一个modified_date字段(日期或时间戳类型),并通过触发器进行更新。
create table test
(
id number,
val varchar2(100),
modified_date date default sysdate not null
)
;
CREATE OR REPLACE TRIGGER TR_TEST_BU
BEFORE UPDATE
ON TEST REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
begin
:new.modified_date := sysdate;
end;
insert into test(id, val) values (1, 'Insert 1');
commit;
select * from test;
exec dbms_lock.sleep(5);
update test set val = 'Update 1' where id = 1;
commit;
select * from test;