sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo se genera Oracle Rowid internamente?

El ID de fila "mínimo" probablemente no proporcione siempre la primera fila insertada de la tabla. Para citar de la documentación :

El "y así sucesivamente" indica que hay muchas razones que harían que un ID de fila cambiara. Esto se puede demostrar fácilmente con un pequeño ejemplo:

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

Notarás que después de una alter table operación el único ID de fila ha cambiado.

Si el ID de fila puede cambiar y como Oracle no garantiza explícitamente que el ID de fila "más bajo" siempre será la primera fila insertada, debe tener otra forma de rastrear esto, si es necesario. Una marca de tiempo o una secuencia incremental sería normal.

Debe ser un requisito bastante inusual encontrar la primera fila insertada sin referencia a ningún dato. Si esto es algo que estás considerando usar, echaría otro vistazo a por qué tienes que hacer esto.