Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Заранее извиняюсь за возможную некомпетентность,но с базами данных (любыми) я ранее работала исключительно,как программист просто использующий функционал баз,т.е. писались программы на С++, Java работающие с базами.А собственно запросами и прочим я не занималась.
Но сейчас в процессе работы возникла задча,которую надо решить, я бы хотел уточнить у Вас как у знатаков
Задача: Есть база, которая обновляется каждый день, интересует возможно ли как то учитывать позиции в которых база изменилась,ну и собственно как то их выводить(записывать)
Пример:
Есть таблица ID Name Name_comp
1 Vasja Super_Vasja
после обновления
ID Name Name_comp
1 Vasja Bad_Vasja
Хочется что бы в итоге доупстим либо создалась таблица,в которой было учтено изменение(вообще без разницы как учитывать изменение,главное учесть)
Таблица изменений
ID Bil Stal
1 Super_Vasja Bad_Vasja
Неактивен
Самый простой способ журналировать изменения - на нужных таблицах повесить триггеры
на изменение данных - и писать в отдельную табличку эти сами изменения.
CREATE TRIGGER au_tbl_logger AFTER UPDATE ON tbl FOR EACH ROW
INSERT INTO tbl_log (old, new) VALUES (OLD.field, NEW.field);
CREATE TRIGGER ad_tbl_logger AFTER DELETE ON tbl FOR EACH ROW
INSERT INTO tbl_log (old, new) VALUES (OLD.field, NULL);
CREATE TRIGGER ai_tbl_logger AFTER INSERT ON tbl FOR EACH ROW
INSERT INTO tbl_log (old, new) VALUES (NULL, NEW.field);
P.S. Прочитал заголовок сообщения. Вы в правильную сторону смотрели
Неактивен
Огромное спасибо! буду эксперментировать)
Неактивен
простите,можно ещё один ну совсем уж глупый вопрос...а каким образом описывается,то в каком формате триггер будет полученное значение записчывать в другую таблицу ( в какой столбец и пр.) Заранее огромное спасибо!
Неактивен
Ээ... то есть? В формате колонки Там же явно указано, что будет выполняться:
INSERT INTO tbl_log (old, new) VALUES (OLD.field, NEW.field);
Неактивен
ну я как собственно всегда) сначала задала вопрос..а потом только решила подумать..)))извиняюсь
эксперементирую с триггерами на простейших таблицах (описанных выше)
у меня выпадает ошибка(при попытке изменения поля) SQL Error : Field 'Id' doesn't have a default value
и собственно аблица лога не изменяется
Неактивен
Подозреваю, что в таблице лога у Вас есть поле Id, у которого нет значения по-умолчанию
Неактивен
всё заработало.. спасибо! бесконечно благодарна )
Неактивен