|
|
|
| Есть таблица из нескольких полей. У пользователя есть возможность редактировать их. Необходимо сделать систему, которая бы запоминала историю изменения. Причем пользователю показывала бы последний вариант, а админу - все...
Как лучше сделать? В этой же же таблице записывать измененные данные новой строкой? но что делать тогда с выбором? надо несколько id'ов, чтоли...
Подскажите, как правильно сформировать базу?
чего-то мозг сломался :-( | |
|
|
|
|
|
|
|
для: NovikovMA
(23.07.2007 в 14:59)
| | Можно копировать записи в таблицу истории.
Либо можно внести поле edition типа int NOT NULL DEFAULT 0 и ко всем полям edition записей с одним фактическим id добавлять единицу.
Для выборки приенять SELECT * FROM tbl WHERE edition=0 | |
|
|
|
|
|
|
|
для: Trianon
(23.07.2007 в 15:08)
| | С edition - это хорошо. Это решает проблему с выводом последнего изменения, но затрудняет вывод изменений...
Я бы хотел выводить изменения "по полям". Т.е. например хотел бы видеть для каждого поля последний вариант, потом предпоследний и т.д. А если поле не менялось (не обязательно же все меняется), то показывать один вариант... Тогда походу получается проблема с id'ом, ибо просто distinct'ом не обойтись.. | |
|
|
|
|
|
|
|
для: NovikovMA
(23.07.2007 в 15:21)
| | SELECT * FROM tbl
WHERE instance_id = $instance
ORDER BY edition ASC | |
|
|
|
|
|
|
|
для: NovikovMA
(23.07.2007 в 15:21)
| | >С edition - это хорошо. Это решает проблему с выводом последнего изменения, но затрудняет вывод изменений...
>Я бы хотел выводить изменения "по полям". Т.е. например хотел бы видеть для каждого поля последний вариант, потом предпоследний и т.д. А если поле не менялось (не обязательно же все меняется), то показывать один вариант... Тогда походу получается проблема с id'ом, ибо просто distinct'ом не обойтись..
Почему бы не написать триггер на вставку, удаления или обновления на эту табличку, в котором измененные данные записываются в history table по текущей дате. | |
|
|
|