sql >> Databasteknik >  >> RDS >> Oracle

Hur oracle rowid genereras internt?

Den "minsta" raden kommer förmodligen inte ange alltid den första infogade raden från tabellen. För att citera från dokumentationen :

"och så vidare" indikerar att det finns många skäl som skulle få en rad att ändras. Detta kan enkelt demonstreras med ett litet exempel:

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

Du kommer att märka det efter en alter table operation den enda raden har ändrats.

Om raden kan ändras och eftersom Oracle inte uttryckligen garanterar att den "lägsta" raden alltid kommer att vara den första infogade raden bör du ha ett annat sätt att spåra detta, om det behövs. En tidsstämpel eller en inkrementerande sekvens skulle vara normalt.

Det måste vara ett ganska ovanligt krav att hitta den första infogade raden utan hänvisning till någon data. Om detta är något du funderar på att använda skulle jag ta en ny titt på varför du måste göra detta.



  1. ORD() Exempel – MySQL

  2. Hur man infogar DateTime i MySql Database med C#-kod

  3. Hur exporterar jag en MySQL-databas från PHPMyAdmin och importerar den till SQLite?

  4. Hur man får storleken på kolumnen i mysql-tabellen