Допустимый диапазон SQLite RowiD?
Вопрос
Я делаю обертку SQLite C API.И я хочу вернуть rowid как целочисленный тип.Чтобы пометить случай ошибки, мне нужно неверное значение ROWID.Есть ли em> неверное значение sqlite rowid?Или все значения в подписанных 64-битных целых числах действительны для ROWID?(Потому что, если это так, я должен выбрать другой способ внедрения чехол с маркировкой)
Решение
ID строки - 64-битные целые числа подписанных целых, поэтому максимум составляет 0x7FFFFFFFFFFFFFLL.Но если не отрицательный или нулевой идентификатор строки явно не был введен, автоматически сгенерированные идентификаторы строки всегда больше нуля.Если вы можете быть уверены, что идентификаторы строки всегда будут генерироваться автоматически, то ноль или -1 будут безопасные значения для возврата состояния ошибок.
Думать дальше, я понимаю, что вызов API sqlite3_last_insert_rowid
возвращает ноль, если ничего не было вставлено в таблицу, что делает нулевой де-факто «неверный» идентификатор строки.