题
我正在制作一个sqlite c api的包装器。我想作为整数类型返回rowid。要标记错误情况,我需要ROWID的无效值。sqlite rowid的值是否存在?或符号64bit整数中的所有值对于rowid都有效?(因为如果是,我必须选择另一种实现标记错误情况的方法)
解决方案
行ID是64位符号整数,因此最大值为0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFL。但除非已明确输入负或零行ID,否则自动生成的行ID始终大于零。如果您可以确定将始终自动生成行ID,则零或-1将是错误状态返回的安全值。
进一步思考,我意识到,如果没有插入表格,则意识到sqlite3_last_insert_rowid
API调用返回零,从而使零是“无效”行ID。
不隶属于 StackOverflow