Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie wird Oracle Rowid intern generiert?

Die "minimale" Rowid wird wahrscheinlich nicht Geben Sie immer die erste eingefügte Zeile aus der Tabelle an. Um aus der Dokumentation zu zitieren :

Das "und so weiter" zeigt an, dass es viele Gründe gibt, die dazu führen würden, dass sich eine Rowid ändert. Dies lässt sich leicht an einem kleinen Beispiel demonstrieren:

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

Sie werden das nach einem alter table bemerken Operation hat sich die einzige Rowid geändert.

Wenn sich die Zeilen-ID ändern kann und Oracle nicht ausdrücklich garantiert, dass die "niedrigste" Zeilen-ID immer die erste eingefügte Zeile ist, sollten Sie bei Bedarf eine andere Möglichkeit haben, dies zu verfolgen. Ein Zeitstempel oder eine inkrementierende Sequenz wäre normal.

Es muss eine ziemlich ungewöhnliche Anforderung sein, die erste eingefügte Zeile ohne Bezug auf irgendwelche Daten zu finden. Wenn Sie erwägen, dies zu verwenden, würde ich einen weiteren Blick darauf werfen, warum Sie müssen dies tun.