Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SQL Server:odpowiednik RowVersion w Oracle

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:

<>CREATE TABLE test (id int, wartość int);INSERT INTO test VALUES(1,0);COMMIT;SELECT ora_rowscn, t.* FROM test t;ORA_ROWSCN ID VALUE-------- -- ---------- ---------- 3160728 1 0UPDATE test SET wartość =wartość + 1 WHERE id =1;COMMIT;SELECT ora_rowscn, t.* FROM test t;ORA_ROWSCN ID WARTOŚĆ---------- ---------- ---------- 3161657 1 1UPDATE test USTAW wartość =wartość + 1 GDZIE id =1;ZATWIERDZ;WYBIERZ ora_rowscn, t.* FROM test t;ORA_ROWSCN ID WARTOŚĆ---------- ---------- ---------- 3161695 1 2

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  


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyjątek dotyczący naruszenia ograniczeń ORA-00001

  2. Powolne zapytanie w Javie przez JDBC, ale nie w innych systemach (TOAD)

  3. tworzenie ramki danych pandas z zapytania do bazy danych, które używa zmiennych bind

  4. Zastosuj filtr w Oracle View

  5. Zwracanie kursora referencyjnego Oracle i dołączanie wielu wyników