2012-01-23 37 views
6

私はSQLite C APIのラッパーを作っています。そして、私は整数型としてROWIDを返したい。エラー・ケースをマークするには、ROWIDの値が無効である必要があります。 0x13の無効な値がありますか?または、符号付き64ビット整数のすべての値がROWIDに有効ですか? (そうであれば、マーキングエラーの場合を実装する別の方法を選択する必要があるため)SQLiteのROWIDの有効範囲は?

+0

ここでROWIDについての仕様です:明示的にゼロと負の値について言及するためhttp://www.sqlite.org/autoinc.html – Eonil

答えて

13

行IDは64ビット符号付き整数なので、最大値は0x7FFFFFFFFFFFFFFFLLです。ただし、負またはゼロのローIDが明示的に入力されていない限り、自動生成ローIDは常にゼロより大きくなります。行IDが常に自動的に生成されることが確実な場合は、エラーステータスの戻り値として0または-1が安全な値になります。

また、sqlite3_last_insert_rowid APIコールでは、テーブルに何も挿入されていないとゼロが返されるため、事実上の「無効な」行IDはゼロになります。

+0

おかげで挿入することができます。私は他の何かの仕組みに行きます。 :) – Eonil

関連する問題