SQLite rowid的有效范围?

Eon*_*nil 6 sqlite range rowid

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

Bor*_*din 14

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

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