Rownum (Numeric): với mỗi hàng được trả về từ câu truy vấn, ROWNUM cho biết số thứ tự mà Oracle trả về. Hàng đầu tiên có rownum là 1, hàng thứ hai có rownum là 2,... Vì vậy bạn có thể giới hạn số lượng hàng trong kết quả.
Rowid (Hexadecimal): được tạo tự động khi 1 hàng dữ liệu được Insert vào. Đối với mỗi dòng dữ liệu, Rowid trả về địa chỉ của nó. Rowid xác định giá trị duy nhất một hàng trong database, tuy nhiên các hàng trong những table khác nhau có thể được lưu trữ cùng nhau trong một cụm thì có thể có cùng rowid.
ROWID | ROWNUM |
---|---|
Địa chỉ vật lý của hàng | Số tuần tự, sẽ được phân bổ cho mỗi hàng trong kết quả truy vấn |
Vĩnh viễn, không thay đổi trên hàng | Tạm thời |
16 bit thập lục phân | Số nguyên |
Duy nhất của 1 hàng và được tự động tạo ra khi insert | Giá trị tăng tự động |
SQL> SELECT ROWID "ROWID", ROWNUM "ROWNUM" FROM USER_INFO;
ROWID ROWNUM
------------------ ----------
AAAWobAAFAAAOEzAAV 1
AAAWobAAFAAAOEzAAO 2
AAAWobAAFAAAOEzAAg 3
AAAWobAAFAAAOEzAAK 4
AAAWobAAFAAAOEzAAq 5
AAAWobAAFAAAOEzAAX 6
AAAWobAAFAAAOEzAAb 7
AAAWobAAFAAAOEzAAQ 8
AAAWobAAFAAAOEzAAY 9
AAAWobAAFAAAOEzAAl 10
AAAWobAAFAAAOEzAAC 11
AAAWobAAFAAAOEzAAr 12
AAAWobAAFAAAOEzAAM 13
AAAWobAAFAAAOEzAAn 14
AAAWobAAFAAAOEzAAI 15
15 rows selected.
Bạn không nên dùng Rowid làm khóa chính của bảng. Ví dụ nếu bạn xóa và thực hiện insert lại một hàng, thì Rowid có thể thay đổi. Nếu bạn xóa một hàng, thì Oracle có thể gán lại Rowid cho một hàng sẽ được insert sau đó.
ROWID ROWNUM
------------------ ----------
AAAWobAAFAAAOEzAAV 1
AAAWobAAFAAAOEzAAO 2
AAAWobAAFAAAOEzAAg 3
AAAWobAAFAAAOEzAAK 4
AAAWobAAFAAAOEzAAq 5
AAAWobAAFAAAOEzAAX 6
AAAWobAAFAAAOEzAAb 7
AAAWobAAFAAAOEzAAQ 8
AAAWobAAFAAAOEzAAY 9
AAAWobAAFAAAOEzAAl 10
AAAWobAAFAAAOEzAAC 11
AAAWobAAFAAAOEzAAr 12
AAAWobAAFAAAOEzAAM 13
AAAWobAAFAAAOEzAAn 14
AAAWobAAFAAAOEzAAI 15
15 rows selected.
(ORA-00001) - ROWNUM & ROWID?
Reviewed by Uit Lân
on
12/06/2018 07:47:00 CH
Rating:

Không có nhận xét nào: