2012-01-23 62 views
6

我正在製作SQLite C API的包裝。我想將rowid作爲整數類型返回。爲了標記錯誤情況,我需要一個無效的rowid值。 SQLite rowid是否有無效值?或者有符號64位整數的所有值對rowid有效? (因爲如果是這樣,我必須選擇另一種方式來實現標記錯誤的情況)SQLite rowid的有效範圍?

+0

以下是關於rowid的規範:http://www.sqlite.org/autoinc.html – Eonil

回答

13

行ID是64位有符號整數,所以最大值是0x7FFFFFFFFFFFFFFFLL。但是,除非顯式輸入否定或零行ID,否則自動生成的行ID始終大於零。如果您可以確定行ID始終會自動生成,那麼對於錯誤狀態返回,零或-1將是安全值。

進一步思考,我意識到如果在表中沒有插入任何內容,則sqlite3_last_insert_rowid API調用將返回零,因此使事實上的「無效」行ID變爲零。

+0

感謝您提到可以插入顯式零和負值。我會去其他機制。 :) – Eonil