Я построил систему мягкого удаления для таблицы, которая содержит следующие столбцы:
- ID (Auto increments from 1)
- Category
- Title
- Is_Deleted
- Timestamp (Created)
Пример данных (3 строки):
1 Department Dd1x1 0 2014-10-24 18:41:54
2 Logistics L2x14 0 2014-10-24 16:55:27
3 Transit T4y3 0 2014-10-24 17:09:27
Программные удаления также работают при обновлении записи (Бизнес-требование). Поэтому, если я обновлю категорию «Отдел» на «Данные отдела», я сделаю это с помощью:
UPDATE categories_latest SET Is_Deleted = 1 WHERE ID = 1;
INSERT INTO categories_latest(Category, Title, Is_Deleted) VALUES('Department Data', 'Dd1x1', 0);
Сам код работает нормально, но когда я отображаю эти данные во внешнем интерфейсе, это изменяет порядок записей, потому что они упорядочены по идентификатору. Единственный способ обойти это — создать дополнительный столбец с некоторой переменной «Порядок», которую запрос должен будет отсортировать перед извлечением.
Есть ли более простой способ справиться с проблемой и оставить порядок записей без изменений?
Вместо добавления новой записи вы можете просто сохранить последнее значение в другом столбце. Это не будет создавать избыточные записи, также порядок будет таким же.
Других решений пока нет …