Gültiger Bereich von SQLite RowiD?
Frage
Ich mache einen Wrapper von SQLite C API.Und ich möchte ROFID als Ganzzahl-Typ zurückgeben.Um den Fehlerfall zu markieren, benötige ich einen ungültigen Wert des RowID.Gibt es ungültiger Wert von sqlite rowiD?Oder alle Werte in signierten 64-Bit-Ganzzahlen gelten für ROWID?(Denn wenn es ist, muss ich einen anderen Weg wählen, um den Markierungsfehler-Fall zu implementieren)
Lösung
Zeilen-IDs sind 64-Bit-integere ganze Zahlen, sodass das Maximum 0x7FFFFFFFFFFFFFFFll ist.Wenn jedoch keine negative oder null-Zeilen-ID explizit eingegeben wurde, sind automatisch generierte Zeilen-IDs immer größer als Null.Wenn Sie sicher sein können, dass Zeilen-IDs immer automatisch generiert werden, dann wären Null- oder -1 sichere Werte für Fehlerstatusrenditen.
weiter nachzudenken, merke ich, dass der sqlite3_last_insert_rowid
-API-Anruf null zurückgibt, wenn jemals nichts in den Tisch eingesetzt wurde, wodurch Null eine de-facto-Zeilen-ID erstellt wird.