SQLite資料庫中rowid使用
SQLite資料庫中rowid使用
SQLite中每個表都預設包含一個隱藏列rowid,使用WITHOUT ROWID定義的表除外。通常情況下,rowid可以唯一的標記表中的每個記錄。表中插入的第一個條記錄的rowid為1,後續插入的記錄的rowid依次遞增1。即使插入失敗,rowid也會被加一。所以,整個表中的rowid並不一定連續,即使使用者沒有刪除過記錄。
由於唯一性,所以rowid在很多場合中當作主鍵使用。在使用的時候,select * from tablename 並不能獲取rowid,必須顯式的指定。例如,select rowid, * from tablename 才可以獲取rowid列。查詢rowid的效率非常高,所以直接使用rowid作為查詢條件是一個最佳化查詢的好方法。
但是rowid列作為主鍵,在極端情況下存在隱患。由於rowid值會一直遞增,如果達到所允許的最大值9223372036854775807後,它會自動搜尋沒有被使用的值,重新使用,並不會提示使用者。這時,使用rowid排序記錄,會產生亂序,並引入其他的邏輯問題。所以,如果使用者的資料庫存在這種可能的情況,就應該使用AUTOINCREMENT定義主鍵,從而避免這種問題。使用AUTOINCREMENT設定自增主鍵,雖然也會遇到9223372036854775807問題,但是它會報錯,提示使用者,避免產生rowid所引發的問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-2137380/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sqlite操作--- oracle資料庫中的資料導進sqliteSQLiteOracle資料庫
- Python中內建資料庫!SQLite使用指南! ⛵Python資料庫SQLite
- Android 中使用 SQLite 資料庫AndroidSQLite資料庫
- 使用sqlite3 模組操作sqlite3資料庫SQLite資料庫
- Sql Server資料庫資料匯入到SQLite資料庫中Server資料庫SQLite
- sqlite 資料庫的資料字典SQLite資料庫
- 【Java】操作Sqlite資料庫JavaSQLite資料庫
- SQLite資料庫管理器:SQLPro for SQLite for MacSQLite資料庫Mac
- C++編譯SQLite資料庫以及如何使用加密資料庫SQLCipherC++編譯SQLite資料庫加密
- android sqlite資料庫 新增資料AndroidSQLite資料庫
- [Sqlite] 使用Java程式、cmd命令列來備份恢復Sqlite資料庫SQLiteJava命令列資料庫
- python3.x中ORM框架SQLObject使用SQLite資料庫隨筆PythonORM框架ObjectSQLite資料庫
- SQLPro for SQLite Mac(SQLite資料庫管理工具)SQLiteMac資料庫
- 高效操控SQLite資料庫,盡在SQLPro for SQLite for MacSQLite資料庫Mac
- Python操作SQLite資料庫PythonSQLite資料庫
- Python 操作 SQLite 資料庫PythonSQLite資料庫
- sqlite3資料庫操作SQLite資料庫
- IOS資料儲存之Sqlite資料庫iOSSQLite資料庫
- [Sqlite] Java使用jdbc連線Sqlite資料庫進行各種資料操作的詳細過程SQLiteJavaJDBC資料庫
- python用sqlite3模組操作sqlite資料庫PythonSQLite資料庫
- Python資料庫模組(sqlite3,SQLite3)Python資料庫SQLite
- Oracle資料庫開發——瞭解rowidOracle資料庫
- php sqlite 建立本地資料庫PHPSQLite資料庫
- Python連線SQLite資料庫PythonSQLite資料庫
- 用Julia 0.51操作sqlite資料庫SQLite資料庫
- sqlite 資料庫 相關知識SQLite資料庫
- C#訪問SQLite資料庫C#SQLite資料庫
- sqlite建立本地資料庫並插入資料SQLite資料庫
- 【Android】資料儲存(三) 資料庫(SQLite)Android資料庫SQLite
- 資料庫 sqlite3_get_table,sqlite3_free_table資料庫SQLite
- 如何在 SAP BTP Java 應用裡使用 SQLite 資料庫JavaSQLite資料庫
- 攻擊者使用SQLite資料庫中的惡意程式碼攻擊應用程式SQLite資料庫
- Python3資料庫模組(sqlite3,SQLite3)Python資料庫SQLite
- python sqlite3 資料庫操作PythonSQLite資料庫
- SQLite資料庫怎麼這麼快?SQLite資料庫
- HTML5 本地資料庫(SQLite) 示例HTML資料庫SQLite
- C++ 操作sqlite3資料庫C++SQLite資料庫
- Python SQLite資料庫程式設計PythonSQLite資料庫程式設計