create table flashback_ex ( id number not null, txt varchar2(7) );
insert into flashback_ex values (1,'one' ); insert into flashback_ex values (2,'two' ); insert into flashback_ex values (3,'three'); insert into flashback_ex values (4,'four' ); insert into flashback_ex values (5,'five' ); insert into flashback_ex values (6,'six' ); insert into flashback_ex values (7,'seven'); insert into flashback_ex values (8,'eight'); insert into flashback_ex values (9,'nine' ); commit;
variable v_scn number
exec :v_scn := dbms_flashback.get_system_change_number
insert into flashback_ex values (10, 'ten' ); insert into flashback_ex values (20, 'twenty'); update flashback_ex set id = 40, txt='fourty' where id = 4; update flashback_ex set id = 50, txt='fifty' where id = 5; delete from flashback_ex where id = 7; delete from flashback_ex where id = 8; commit;
set numf 99999 select case when prv_id is null then 'deleted' when cur_id is null then 'inserted' else 'updated' end operation, prv_id, cur_id, prv_txt, cur_txt from ( select rowid r, id prv_id, txt prv_txt from flashback_ex as of scn :v_scn ) full join ( select rowid r, id cur_id, txt cur_txt from flashback_ex ) using (r) where prv_id != cur_id or prv_txt != cur_txt or prv_id is null or cur_id is null;
OPERATIO PRV_ID CUR_ID PRV_TX CUR_TX -------- ------ ------ ------ ------ updated 4 40 four fourty updated 5 50 five fifty inserted 8 eight inserted 7 seven deleted 20 twenty deleted 10 ten
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25164132/viewspace-749184/ ,如需转载,请注明出处,否则将追究法律责任。