Триггер ли нужен или что-то другое - MySQL
Формулировка задачи:
Доброго времени суток. Вот гуглю уже несколько дней и понять не могу что мне подойдет.
Дело вот в чем есть база статистики игрового сервера. В которой производится запись измененной статистики по разным параметрам. Для создания графика изменения статистики мне нужна история изменений, но данные в базе перезаписываются. Теперь сам вопрос как мне сделать историю изменений в базе ?
Решение задачи: «Триггер ли нужен или что-то другое»
textual
Листинг программы
create table test(id int, name varchar(100)); create table test1 (id int, name varchar(100), dd datetime); delimiter// CREATE TRIGGER `History` AFTER UPDATE ON `test` FOR EACH ROW BEGIN INSERT INTO `test1` (id, name, dd) VALUES(NEW.ID, NEW.name, now()); END// insert into test values(1, 'vova'); update test set name= 'vova2' where id=1; MariaDB [test]> select * from test1; +------+-------+---------------------+ | id | name | dd | +------+-------+---------------------+ | 1 | vova2 | 2016-04-04 15:30:31 | +------+-------+---------------------+
Объяснение кода листинга программы
- Создается таблица
testс двумя столбцами:idиname. - Создается таблица
test1с тремя столбцами:id,nameиdd. - Устанавливается разделитель для оператора
CREATE TRIGGERиINSERT INTOс помощью командыdelimiter //. - Создается триггер
Historyпосле обновления таблицыtest. - Для каждой строки, которую обновляют, выполняется операция
INSERT INTOдля таблицыtest1. - Значения новых полей
IDиnameберутся из обновленной строки и записываются в таблицуtest1. - Значение поля
ddустанавливается как текущее время с помощью функцииnow(). - Завершается создание триггера.
- Вставляется строка в таблицу
testсidравным 1 иnameравным 'vova'. - Обновляется строка в таблице
testсidравным 1 иnameизмененным на 'vova2'. - Выполняется запрос
select * from test1и выводятся результаты.