Gamma valida di SQLite Rowid?
Domanda
Sto facendo un wrapper di API SQLite C.E voglio tornare a rowid come tipo intero.Per contrassegnare il caso di errore, ho bisogno di un valore non valido della rowid.È lì valore non valido di sqlite rowid?O tutti i valori negli interi di 64 bit firmati sono validi per RowID?(Perché se lo è, devo scegliere un altro modo di implementare il caso di errore di marcatura)
Soluzione
ID Riga sono numeri interi firmati a 64 bit, quindi il massimo è 0x7FFFFFFFFFFFFFFFFLLL.Ma a meno che un ID riga negativo o zero è stato inserito esplicitamente, gli ID di riga generati automaticamente sono sempre maggiori di zero.Se è possibile essere certi che gli ID di riga verranno sempre generati automaticamente, quindi zero o -1 saranno valori sicuri per per il ritorno dello stato degli errori.
Pensando inoltre, mi rendo conto che la chiamata API sqlite3_last_insert_rowid
restituisce zero se nulla sia mai stato inserito nella tabella, rendendo così zero un ID riga "non valido" defacto.