2012-01-23 26 views
6

SQLite C API sarıcısı yapıyorum. Ve tamsayı türü olarak rowid dönmek istiyorum. Hata durumunu işaretlemek için, geçersiz bir değere ihtiyacım var. SQLite rowid'in geçersiz değeri var mı? Veya işaretli 64bit tamsayıdaki tüm değerler satır kimliği için geçerlidir? (eğer öyleyse, işaretleme hata durumunu uygulamak için başka bir yol seçmeliyim)Geçerli SQLite satır aralığı aralığı?

+0

Burada rowid ile ilgili bilgiler: http://www.sqlite.org/autoinc.html – Eonil

cevap

13

Satır kimlikleri 64 bit imzalı tamsayılardır, bu yüzden maksimum 0x7FFFFFFFFFFFFFFFLL'dir. Ancak, bir negatif veya sıfır satır kimliği açıkça girilmediği sürece, otomatik oluşturulan satır kimlikleri her zaman sıfırdan büyüktür. Satır kimliklerinin her zaman otomatik olarak üretileceğinden emin olabilirseniz, hata durumu geri dönüşleri için sıfır veya -1 güvenli değerler olacaktır.

Ayrıca, tabloya hiçbir şey eklenmediyse sqlite3_last_insert_rowid API çağrısının sıfır olduğunu ve böylece de facto "geçersiz" satır kimliği sıfırını gerçekleştirdiğinin farkındayım.

+0

Açık sıfırdan söz ettiğin için teşekkürler ve negatif değerler eklenebilir. Başka bir mekanizmaya gideceğim. :) – Eonil