質問

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

役に立ちましたか?

解決

行IDは64ビット符号付き整数であるため、最大値は0x7FFFFFFFFFFFFFFFFLです。しかし、マイナスまたはゼロの行IDが明示的に入力されていない限り、自動生成された行IDは常にゼロより大きいです。行IDが常に自動的に生成されることができるようにすることができれば、ゼロまたは-1はエラーステータスの返品について安全な値になります。

考え方を考えると、sqlite3_last_insert_rowid API呼び出しはテーブルに何も挿入されていない場合はゼロを返し、ゼロがゼロになると、「無効な」行IDがゼロになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top