Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana oracle rowid dihasilkan secara internal?

Baris "minimum" mungkin tidak selalu sediakan baris pertama yang dimasukkan dari tabel. Mengutip dari dokumentasi :

"dan seterusnya" menunjukkan bahwa ada banyak alasan yang akan menyebabkan rowid berubah. Ini dapat dengan mudah ditunjukkan dengan contoh kecil:

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

Anda akan melihat bahwa setelah alter table operasi satu-satunya rowid telah berubah.

Jika rowid dapat berubah dan karena Oracle tidak secara eksplisit menjamin bahwa rowid "terendah" akan selalu menjadi baris pertama yang dimasukkan, Anda harus memiliki cara lain untuk melacak ini, jika diperlukan. Stempel waktu atau urutan kenaikan akan menjadi normal.

Pasti persyaratan yang sangat tidak biasa untuk menemukan baris pertama yang disisipkan tanpa referensi ke data apa pun. Jika ini adalah sesuatu yang Anda pertimbangkan untuk digunakan, saya akan melihat lagi mengapa Anda perlu melakukan ini.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Definisi kolom tidak sesuai dengan definisi kolom berkerumun

  2. Jumlah baris yang terpengaruh oleh UPDATE di PL/SQL

  3. Memanggil skrip shell dari PL/SQL, tetapi shell dieksekusi sebagai pengguna grid, bukan oracle

  4. Bantuan mengganti Oracle (+) bergabung dengan ANSI bergabung

  5. Cara (unit-) menguji aplikasi PL/SQL intensif data