Вопрос

Я делаю обертку SQLite C API.И я хочу вернуть rowid как целочисленный тип.Чтобы пометить случай ошибки, мне нужно неверное значение ROWID.Есть ли em> неверное значение sqlite rowid?Или все значения в подписанных 64-битных целых числах действительны для ROWID?(Потому что, если это так, я должен выбрать другой способ внедрения чехол с маркировкой)

Это было полезно?

Решение

ID строки - 64-битные целые числа подписанных целых, поэтому максимум составляет 0x7FFFFFFFFFFFFFLL.Но если не отрицательный или нулевой идентификатор строки явно не был введен, автоматически сгенерированные идентификаторы строки всегда больше нуля.Если вы можете быть уверены, что идентификаторы строки всегда будут генерироваться автоматически, то ноль или -1 будут безопасные значения для возврата состояния ошибок.

Думать дальше, я понимаю, что вызов API sqlite3_last_insert_rowid возвращает ноль, если ничего не было вставлено в таблицу, что делает нулевой де-факто «неверный» идентификатор строки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top