Oracle
 sql >> Base de données >  >> RDS >> Oracle

Comment Oracle Rowid est-il généré en interne ?

Le rowid "minimal" ne sera probablement pas fournissez toujours la première ligne insérée à partir du tableau. Pour citer la documentation :

Le "et ainsi de suite" indique qu'il existe de nombreuses raisons qui entraîneraient la modification d'un rowid. Cela peut facilement être démontré avec un petit exemple :

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

Vous remarquerez qu'après un alter table opération le seul rowid a changé.

Si le rowid peut changer et qu'Oracle ne garantit pas explicitement que le rowid "le plus bas" sera toujours la première ligne insérée, vous devriez avoir un autre moyen de suivre cela, si nécessaire. Un horodatage ou une séquence d'incrémentation serait normal.

Ce doit être une exigence assez inhabituelle de trouver la première ligne insérée sans référence à aucune donnée. Si c'est quelque chose que vous envisagez d'utiliser, je réexaminerai pourquoi vous devez le faire.