我正在製作SQLite C API的包裝。我想將rowid作爲整數類型返回。爲了標記錯誤情況,我需要一個無效的rowid值。 SQLite rowid是否有無效值?或者有符號64位整數的所有值對rowid有效? (因爲如果是這樣,我必須選擇另一種方式來實現標記錯誤的情況)SQLite rowid的有效範圍?
6
A
回答
13
行ID是64位有符號整數,所以最大值是0x7FFFFFFFFFFFFFFFLL。但是,除非顯式輸入否定或零行ID,否則自動生成的行ID始終大於零。如果您可以確定行ID始終會自動生成,那麼對於錯誤狀態返回,零或-1將是安全值。
進一步思考,我意識到如果在表中沒有插入任何內容,則sqlite3_last_insert_rowid
API調用將返回零,因此使事實上的「無效」行ID變爲零。
+0
感謝您提到可以插入顯式零和負值。我會去其他機制。 :) – Eonil
相關問題
- 1. sqlite視圖沒有rowid值
- 2. 在Android/SQLite中獲取未使用的rowid的有效方法?
- 3. 有效的默認範圍
- 4. 變量的有效範圍
- 5. java.util.Date的有效範圍?
- 6. QDateTime的有效範圍:: fromMSecsSinceEpoch
- 7. 有效numpy值的範圍
- 8. 有效的vba範圍
- 9. NullPointerException獲取SQLite rowID
- 10. SQLite:未找到ROWID
- 11. OSGI有效版本範圍
- 12. SQLite的 - 值在範圍
- 13. Javascript中的數字和有效範圍
- 14. Rails中的有效範圍time_select
- 15. Jquery選擇器的有效性/範圍
- 16. SQLite重命名fts3 rowid列
- 17. SQLite和範圍查詢
- 18. 在SQLite中查詢範圍
- 19. SQLite/GreenDAO會話範圍
- 20. SQLite查找最近或下一個ROWID的ROWID
- 21. 在sqlite結果集中檢索rowid的rowid
- 22. 無效的範圍錯誤
- 23. orderedSetWithOrderedSet:範圍:copyItems:NSArray的等效
- 24. 錯誤[]無效的範圍
- 25. 年已超出有效範圍:1400 ... 10000
- 26. SQLite創建表的ROWID的別名
- 27. 的Android SQLite的範圍查詢
- 28. 用於WITHOUT ROWID的SQLite編輯器
- 29. SQLite中的ROWID是否自動設置?
- 30. Laravel 5.1:與SQLite rowid的關係?
以下是關於rowid的規範:http://www.sqlite.org/autoinc.html – Eonil