溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

SQLite數(shù)據(jù)庫(kù)中是rowid使用是怎樣的

發(fā)布時(shí)間:2021-12-02 11:02:28 來(lái)源:億速云 閱讀:526 作者:柒染 欄目:互聯(lián)網(wǎng)科技

這篇文章給大家介紹SQLite數(shù)據(jù)庫(kù)中是rowid使用是怎樣的,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

SQLite數(shù)據(jù)庫(kù)中rowid使用

SQLite中每個(gè)表都默認(rèn)包含一個(gè)隱藏列rowid,使用WITHOUT ROWID定義的表除外。通常情況下,rowid可以唯一的標(biāo)記表中的每個(gè)記錄。表中插入的第一個(gè)條記錄的rowid為1,后續(xù)插入的記錄的rowid依次遞增1。即使插入失敗,rowid也會(huì)被加一。所以,整個(gè)表中的rowid并不一定連續(xù),即使用戶沒(méi)有刪除過(guò)記錄。

由于唯一性,所以rowid在很多場(chǎng)合中當(dāng)作主鍵使用。在使用的時(shí)候,select * from tablename 并不能獲取rowid,必須顯式的指定。例如,select rowid, * from tablename 才可以獲取rowid列。查詢r(jià)owid的效率非常高,所以直接使用rowid作為查詢條件是一個(gè)優(yōu)化查詢的好方法。

但是rowid列作為主鍵,在極端情況下存在隱患。由于rowid值會(huì)一直遞增,如果達(dá)到所允許的最大值9223372036854775807后,它會(huì)自動(dòng)搜索沒(méi)有被使用的值,重新使用,并不會(huì)提示用戶。這時(shí),使用rowid排序記錄,會(huì)產(chǎn)生亂序,并引入其他的邏輯問(wèn)題。所以,如果用戶的數(shù)據(jù)庫(kù)存在這種可能的情況,就應(yīng)該使用AUTOINCREMENT定義主鍵,從而避免這種問(wèn)題。使用AUTOINCREMENT設(shè)置自增主鍵,雖然也會(huì)遇到9223372036854775807問(wèn)題,但是它會(huì)報(bào)錯(cuò),提示用戶,避免產(chǎn)生rowid所引發(fā)的問(wèn)題。

關(guān)于SQLite數(shù)據(jù)庫(kù)中是rowid使用是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI