Триггер ли нужен или что-то другое - 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
и выводятся результаты.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д