Oracle ma SCN (System Change Numbers):http://docs.oracle.com/cd/E11882_01/server.112/e10713/transact.htm#CNCPT039
Użyj pseudokolumny ORA_ROWSCN do sprawdzenia bieżącego numeru SCN wierszy:
http://docs.oracle.com/cd/B28359_01/server.111/b28286/pseudocolumns007.htm#SQLRF51145
Przykład:
SELECT ora_rowscn, t.* Z testu t;
Demo --> http://www.sqlfiddle.com/#!4/535bc /1
(W SQLFiddle jawne zatwierdzenia najwyraźniej nie działają - w prawdziwej bazie danych każde zatwierdzenie zwiększa SCN).
Przykład "prawdziwej" bazy danych:
Jeśli SCN transakcji jest znany, możemy użyć zapytania flashback, aby uzyskać przeszłą wartość wiersza:
http://docs.oracle.com/cd/B28359_01/appdev.111/b28424/adfns_flashback.htm#g1026131
Przykład:
SELECT t.*,version_startscn,version_starttime,version_endscn,version_endtime,version_xid,version_operationFROM test WERSJE BETWEEN SCN MINVALUE I MAXVALUE t; ID WARTOŚĆ VERSIONS_STARTSCN VERSIONS_STARTTIME VERSIONS_ENDSCN VERSIONS_ENDTIME VERSIONS_XID VERSIONS_OPERATION---------- ---------- ------ ----- -------------- --------------- ------------------- -- -------------- ------------------ 1 2 3161695 13.12.10 08:19:39 06000300EA070000 U 1 1 3161657 13.12.10 08:18:39 3161695 13.12.10 08:19:39 06001200EA070000 U 1 0 3161657 13.12.10 08:18:39 SELECT t.*, wersje_startscn, wersje_starttime, wersje_endscn, wersje_endtime, wersje_xid ,version_operationFROM test WERSJE POMIĘDZY SCN 3161657 A 3161657 t; ID WARTOŚĆ VERSIONS_STARTSCN VERSIONS_STARTTIME VERSIONS_ENDSCN VERSIONS_ENDTIME VERSIONS_XID VERSIONS_OPERATION---------- ---------- ------ ----- -------------- --------------- ------------------- -- -------------- ------------------ 1 1 3161657 13.12.10 08:18:39 06001200EA070000 U