oracle中的rowid使用及說明
oracle中的rowid
oracle數(shù)據(jù)庫的表中的每一行數(shù)據(jù)都有一個唯一的標(biāo)識符,或者稱為rowid,在oracle內(nèi)部通常就是使用它來訪問數(shù)據(jù)的。
rowid需要 10個字節(jié)的存儲空間,并用18個字符來顯示。
該值表明了該行在oracle數(shù)據(jù)庫中的物理具體位置??梢栽谝粋€查詢中使用rowid來表明查詢結(jié)果中包含該值。

AAAR1yAAHAAAAFkAAA為例
這里的AAAR1y是數(shù)據(jù)庫對象編號,AAH是文件標(biāo)號,AAAAFk是塊編號,最后三位AAA是行編號。
使用select * from DEPT;
輸出結(jié)果中是不能看到rowid這里一列的,這是因為這一列只在數(shù)據(jù)庫內(nèi)部使用,rowid通常被稱為一個偽列。

如果想選擇
scott.emp的數(shù)據(jù)后進(jìn)行手工修改,則必須使
select rowid,t.* from scott.emp t;
而不能直接寫成
select * from emp; select rowid,t.* from scott.emp t; select * from scott.emp for update;
在ORACLE中用ROWID來定位記錄是最快的,比索引還快,所以如果先用SELECT ROWID選出要更新的行,放入COLLECTION中,再用 FORALL UPDATE 來批量更新可以提高速度。從這點來講是比其他方法好一點
SELECT FOR UPDATE在更新前會鎖定記錄,這在復(fù)雜的并行查詢更新程序中是必要的,比如要求數(shù)據(jù)一致性,在過濾數(shù)據(jù)時不允許他人改動數(shù)據(jù),會用FOR UPDATE或SET TRANSACTION READ ONLY來加鎖。
另外像 CURSOR里的WHERE CURRENT OF CURSOR語句要求SELECT中必須加FOR UPDATE.
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
 Oracle 解決ORA-00257 Archiver error 報錯問題解決
訂單投資交易環(huán)境進(jìn)行 impdb 數(shù)據(jù)泵恢復(fù)數(shù)據(jù),執(zhí)行到一半,報錯終止,歸檔策略保留時間較長,或歸檔頻率過高,導(dǎo)致數(shù)據(jù)庫掛載盤符空間不足,本文給大家分享Oracle 解決ORA-00257 Archiver error 報錯問題解決,感興趣的朋友一起看看吧2023-12-12
 Oracle數(shù)據(jù)庫把多行轉(zhuǎn)一列逗號分割兩種方法
Oracle將行轉(zhuǎn)換為列是指將關(guān)系型數(shù)據(jù)庫中的行數(shù)據(jù)轉(zhuǎn)換為列數(shù)據(jù)的操作,這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫把多行轉(zhuǎn)一列逗號分割兩種方法的相關(guān)資料,需要的朋友可以參考下2024-07-07
 oracle查看字符集后修改oracle服務(wù)端和客戶端字符集的步驟
本文介紹了oracle server端查詢字符集后,修改oracle服務(wù)端和客戶端字符集的步驟,大家參考使用吧2014-01-01

