sql >> Databáze >  >> RDS >> Oracle

Jak se interně generuje oracle rowid?

„Minimální“ rowid pravděpodobně ne vždy uveďte první vložený řádek z tabulky. Citace z dokumentace :

„a tak dále“ naznačuje, že existuje mnoho důvodů, které by způsobily změnu rowid. To lze snadno demonstrovat na malém příkladu:

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

Všimnete si toho za alter table operace jediný rowid se změnil.

Pokud se rowid může změnit a protože Oracle výslovně nezaručuje, že „nejnižší“ rowid bude vždy prvním vloženým řádkem, měli byste mít v případě potřeby jiný způsob sledování. Časové razítko nebo zvyšující se sekvence by byly normální.

Najít první vložený řádek bez odkazu na nějaká data musí být dost neobvyklý požadavek. Pokud to je něco, co zvažujete použít, znovu bych se podíval na proč musíte to udělat.



  1. Jak zkontrolovat, zda existuje trigger v PostgreSQL?

  2. PHP PDO - Počet řádků

  3. Potřebujete vždy databázi pro svou aplikaci?

  4. Sjednocení způsobující výraz ORA-01790:musí mít stejný datový typ jako odpovídající výraz