Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Rowid oracle được tạo ra bên trong như thế nào?

Rowid "tối thiểu" sẽ có thể không luôn cung cấp hàng được chèn đầu tiên từ bảng. Để trích dẫn từ tài liệu :

"và như vậy" chỉ ra rằng có nhiều lý do có thể gây ra sự ồn ào thay đổi. Điều này có thể dễ dàng được chứng minh bằng một ví dụ nhỏ:

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

Bạn sẽ nhận thấy điều đó sau alter table hoạt động rowid duy nhất đã thay đổi.

Nếu rowid có thể thay đổi và vì Oracle không đảm bảo rõ ràng rằng rowid "thấp nhất" sẽ luôn là hàng được chèn đầu tiên, bạn nên có một cách khác để theo dõi điều này, nếu cần. Dấu thời gian hoặc chuỗi tăng dần sẽ là bình thường.

Nó phải là một yêu cầu khá bất thường để tìm hàng được chèn đầu tiên mà không cần tham chiếu đến bất kỳ dữ liệu nào. Nếu đây là thứ bạn đang cân nhắc sử dụng, tôi sẽ xem xét lại tại sao bạn cần phải làm điều này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle - chia ngày thành các quý

  2. Mệnh đề where có điều kiện trong Oracle

  3. Bảng kép trong Oracle là gì?

  4. Bỏ bảng nếu nó tồn tại

  5. ORA-38868