Как вы свернете стек данных ключ-значение обратно на себя, чтобы сохранить последовательность идентификатора? - PullRequest
0 голосов
/ 08 июля 2011

Итак, вот структура данных. Это упрощенно, но есть подвох.

INT id, TEXT subject, TEXT response

По сути, он будет заполнен простыми записями данных. Тем не менее, они должны поддерживать удаление. Суть в том, что идентификационные номера всегда должны быть последовательными. например, 1-100 не пропускается как 1-4,6-12,14-100, потому что 5 и 13 были удалены.

То, что я спрашиваю, в основном, как вам свернуть стек данных ключ-значение обратно в себя, чтобы сохранить последовательность идентификатора?

1 Ответ

0 голосов
/ 08 июля 2011

Если бы это было на самом деле требование (и что-то пахнет этим), я, вероятно, выполнил бы его с помощью триггера ON DELETE.

В этом триггере, когда происходило удаление, я немедленно выбирал строкусоответствует текущему max (id) в таблице, и если max (id) больше, чем идентификатор строки, которую вы только что удалили *, я бы сделал обновление наидентификатор существующей строки, совпадающий с идентификатором только что удаленной строки.

* Причина того, что max (id) больше, чем идентификатор только что удаленной строки, заключается вубедитесь, что вы не выполняете обновление в случае, когда вы только что удалили строку max.

Теперь я не знаю, поддерживает ли sqlite даже триггеры.Если этого не произойдет, вам придется реализовать ту же логику в клиентском коде.

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

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