我正在制作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