Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como o oracle rowid é gerado internamente?


O rowid "mínimo" provavelmente não sempre forneça a primeira linha inserida da tabela. Para citar a documentação :

O "e assim por diante" indica que há muitos motivos que fariam com que um rowid fosse alterado. Isso pode ser facilmente demonstrado com um pequeno exemplo:
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

Você notará que após um alter table operação o único rowid foi alterado.

Se o rowid puder mudar e como o Oracle não garante explicitamente que o rowid "mais baixo" sempre será a primeira linha inserida, você deve ter outra maneira de rastrear isso, se necessário. Um carimbo de data/hora ou uma sequência de incremento seria normal.

Deve ser um requisito bastante incomum encontrar a primeira linha inserida sem referência a nenhum dado. Se isso é algo que você está pensando em usar, eu daria outra olhada no por que você precisa fazer isso.