2014-03-29 3 views
1

У меня есть несколько таблиц, которые я хочу использовать для управления версиями, и имеют эффективные и эффективные на сегодняшний день. Всякий раз, когда приложение или пользователь записывает UPDATE в эту таблицу, я хочу, чтобы он перенаправлялся на две совершенно новые команды: ОБНОВЛЯЙТЕ целевую запись, чтобы дата EFFECTIVE_TO была заполнена текущей датой и временем, а INSERT - совершенно новая запись с обновленными атрибутами.MySQL trigger: включить UPDATE в UPDATE и INSERT?

Возможно ли это с помощью триггера или мне нужно постоянно контролировать это с помощью приложения Java?

+0

Вы хотите обновить и вставить в ту же таблицу? не будет ли дублировать записи? – Rahul

+0

Да. Но вставленная запись будет текущей записью с новыми значениями и эффективной с 12-31-2099. Старая запись будет обновляться с текущей датой, которая фактически прекратит ее. Это отслеживание изменений и просмотр истории. – tmn

+0

да, вы можете сделать это с помощью триггера, но я бы предложил сохранить две отдельные таблицы (текущий/история). – Rahul

ответ

0

Нечто подобное, вероятно,

delimiter | 

CREATE TRIGGER versioningcontrol AFTER UPDATE ON yourtable 
    FOR EACH ROW 
    BEGIN 
    INSERT INTO yourtable(col1,col2,...) values(...); 
    END; 
| 

delimiter ;