Oracle
 sql >> Database >  >> RDS >> Oracle

In che modo Oracle Rowid viene generato internamente?

Il rowid "minimo" probabilmente no fornire sempre la prima riga inserita dalla tabella. Per citare da la documentazione :

Il "e così via" indica che ci sono molte ragioni che farebbero cambiare un rowid. Questo può essere facilmente dimostrato con un piccolo esempio:

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

Lo noterai dopo un alter table operazione l'unico rowid è cambiato.

Se il rowid può cambiare e poiché Oracle non garantisce esplicitamente che il rowid "più basso" sarà sempre la prima riga inserita, dovresti avere un altro modo per tracciarlo, se necessario. Un timestamp o una sequenza di incremento sarebbe normale.

Deve essere un requisito piuttosto insolito trovare la prima riga inserita senza riferimento ad alcun dato. Se è qualcosa che stai pensando di usare, darò un'altra occhiata al perché devi farlo.