
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.07.2018, 01:03
|
|||
|---|---|---|---|
История значений |
|||
|
#18+
Здравствуйте посоветуйте, пожалуйста, как лучше сделать в БД в таблице pages есть два поля title(varchar) и text(longblob) в форме редактирования на title использую инпут, а на text стоит ckeditor (текст редактируем в html, вставляем картинки, таблицы и т.д. - грубо говоря используем как ворд) мне нужно хранить историю изменения текстового поля text(longblob) я сейчас сделал вторую таблицу history: page_id, text и при нажатии на "сохранить" (например редактирую 10 запись, например, select title, text from `pages` where `id`=10): 1. в таблицу history добавляю текст до сохранения, условный код: Код: sql 1. 2. а в таблице pages обновляю значение, которое у меня приходит из POST: update pages set text=POST[text] where `id`=10) Таким образом я каждый раз сохраняю "новую" версию в pages, а старую версию добавляю в history Вприницпе нормальное решение, меня устраивает, но может быть есть получше варианта решения такой задачи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2018, 07:40
|
|||
|---|---|---|---|
История значений |
|||
|
#18+
Измените структуру таблицы и добавьте в неё поле ... ну, скажем, dt DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP. Алгоритм изменится так - при нажатии на "сохранить" существующая запись обновляется, автоматически получая IsValid, равный времени прекращения действия записи, затем в таблицу добавляется новая запись. Соответственно при прочих операциях в запрос добавляется условие WHERE IsValid IS NULL - и все "старые" записи отсеиваются. А индекс по этому полю (одиночно или префиксно) не даст просесть по производительности. Иными словами, одна таблица хранит и текущее актуальное состояние, и историю, и даже штампы времени актуальности (изменения). При работе с историей не нужно делать UNION двух таблиц, чтобы получить "сейчас и раньше". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.07.2018, 07:42
|
|||
|---|---|---|---|
История значений |
|||
|
#18+
Akinaпри нажатии на "сохранить" существующая запись обновляетсяИмеется в виду UPDATE table SET title=title - т.е. фактического обновления данных нет, а вот поле dt обновляется с NULL на текущее время. PS. Альтернативно - штамп времени сам по себе, фиксирует время создания записи, а актуальностью рулит поле IsValid INT(1) DEFAULT1, получающее 0 при обновлении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=47&mobile=1&tid=1829727]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
136ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 465ms |

| 0 / 0 |
