SQLite rowid的有效范围?

时间:2012-01-23 02:35:57

标签: sqlite range rowid

我正在制作SQLite C API的包装器。我想将rowid作为整数类型返回。要标记错误情况,我需要rowid的无效值。 SQLite rowid有无效值吗?或者有符号64位整数的所有值对rowid都有效? (因为如果是的话,我必须选择另一种方式来实现标记错误的情况)

1 个答案:

答案 0 :(得分:14)

行ID是64位有符号整数,因此最大值为0x7FFFFFFFFFFFFFFFLL。但除非明确输入负行或零行ID,否则自动生成的行ID始终大于零。如果您可以确定将始终自动生成行ID,则零或-1将是错误状态返回的安全值。

进一步思考,我意识到如果表中没有插入任何内容,sqlite3_last_insert_rowid API调用将返回零,从而使得事实上的“无效”行ID为零。