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

Jak Oracle Rowid jest generowany wewnętrznie?

Rowid „minimalny” prawdopodobnie nie zawsze podaj pierwszy wstawiony wiersz z tabeli. Cytując z dokumentacji :

„i tak dalej” wskazuje, że istnieje wiele przyczyn, które mogłyby spowodować zmianę awanturnika. Można to łatwo zademonstrować na małym przykładzie:

create table tmp_test ( a number );
insert into tmp_test values (1);
select rowid, a from tmp_test;

ROWID                       A
------------------ ----------
AABo3AAFvAAAda6AAA          1
alter table tmp_test move;
select rowid, a from tmp_test;

ROWID                       A
------------------ ----------
AABo3BAFvAAAdbjAAA          1

Zauważysz, że po alter table operacji zmienił się jedyny wiersz.

Jeśli wiersz może się zmienić, a Oracle nie gwarantuje wyraźnie, że „najniższy” wiersz będzie zawsze pierwszym wstawianym wierszem, w razie potrzeby powinieneś mieć inny sposób śledzenia tego. Znacznik czasu lub sekwencja inkrementacji byłyby normalne.

To musi być dość nietypowe wymaganie, aby znaleźć pierwszy wstawiony wiersz bez odniesienia do jakichkolwiek danych. Jeśli zastanawiasz się nad tym, aby skorzystać z tej opcji, ponownie przyjrzę się dlaczego musisz to zrobić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dlaczego indeks NLSSORT nie jest używany dla tego zapytania?

  2. PLS-00201:identyfikator 'R_CUR' musi być zadeklarowany w dynamicznym sql

  3. Tworzenie indeksu

  4. Zbieranie zbiorcze za pomocą aktualizacji

  5. Oracle 10g akceptuje 5-cyfrowy rok w Dacie