Android SQLite дилемма - PullRequest
       26

Android SQLite дилемма

0 голосов
/ 28 ноября 2011

Я хочу увеличить мой целочисленный первичный ключ на 1 для каждой новой записи в конкретной таблице. Я прочитал, что я мог бы сделать это с помощью AUTOINCREMENT. С другой стороны, я нашел примечание ниже:

Обратите внимание, что "монотонно увеличивающееся" не означает, что ROWID всегда увеличивается ровно на единицу. Одним из них является обычный прирост. Однако, если вставка завершается неудачно из-за (например) ограничения уникальности, ROWID неудачной попытки вставки может не использоваться повторно при последующих вставках, что приводит к пробелам в последовательности ROWID. AUTOINCREMENT гарантирует, что автоматически выбранные ROWID будут увеличиваться, но не будут последовательными.

Итак, мой вопрос: использовать ли автоинкремент для подсчета строк в таблице?

Ответы [ 3 ]

2 голосов
/ 28 ноября 2011

Используйте AUTOINCREMENT для увеличения первичного ключа и простой запрос для подсчета количества строк в таблице. Не используйте AUTOINCREMENT для подсчета количества строк.

SELECT COUNT(*) FROM table_name

1 голос
/ 28 ноября 2011

Вы должны посчитать количество строк, используя

SELECT Count(*) FROM tableName

Для обеспечения уникального идентификатора для ваших строк вы можете использовать функцию autoIncrement. Это его цель, и именно это он и сделает.

0 голосов
/ 28 ноября 2011

Обычно нет необходимости быть перфекционистом с вашим индексом ключа db - важно, чтобы он был уникальным, но в 99% случаев согласованность не важна. AUTOINCREMENT гарантирует, что ваш идентификатор ключа будет уникальным, и поэтому вы должны его использовать.

Конечно, я не знаю причину, по которой вы хотите получить последовательный ключ, поэтому есть шанс, что он вам нужен, но есть другие средства для всего, что вы думаете делать с последовательной строкой идентификатора в Android - для подсчета и просмотра таблицы вы можете использовать курсоры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...