Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ведение журнала изменений таблицы MySQL

49K
01 марта 2011 года
Dexogen
22 / / 06.12.2010
Производится update кортежа в некой таблице. Необходимо определить какие именно поля были изменены и сделать соответствующую запись в другой таблице (а-ля журнал изменений).

Пример:

==this_table==
ID | Имя--| Фамилия | Подразделение | Компас Front | Компас FIMI
=================================================
23 | Иван | Пупкин---| ДИТ----------------| открыт---------| закрыт

UPDATE this_table SET podr=$podr, compasfront=$compasfront, compasfimi=$compasfimi

Если какое-то поле изменилось, то (в $change содержится название измененного поля)
INSERT INTO history (user_id, change) VALUES ($id, $change)

==history==
ID | USER_ID | CHANGE | TIME
=============================
1--| 23---------| podr----------| TIMESTAMP

Возможно есть менее безумный способ ведение журнала изменений?
274
01 марта 2011 года
Lone Wolf
1.3K / / 26.11.2006
Триггеры
49K
01 марта 2011 года
Dexogen
22 / / 06.12.2010
Спасибо, понял как вносить дубликат кортежа в history, но как внести только то, что изменилось?
277
01 марта 2011 года
arrjj
1.7K / / 26.01.2011
Сравнить OLD и NEW в триггере по всем полям и изменения занести в историю.
274
01 марта 2011 года
Lone Wolf
1.3K / / 26.11.2006
Цитата: Dexogen
Спасибо, понял как вносить дубликат кортежа в history, но как внести только то, что изменилось?



Перебрать все field_name на такую проверку
NEW.field_name<>OLD.field_name в теле триггера

http://forums.mysql.com/read.php?99,66193,66385#msg-66385

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог