Мога да ви предложа един вид алгоритъм, по който да работите, по-голямата част от основната работа вече е свършена:
Това може да бъде вашата таблица за одит, трябва да добавите колона с времеви клеймо като променена дата или повече информация според вашите изисквания:
CREATE TABLE audit (
old_data VARCHAR(100),
new_data VARCHAR(100),
tbl_name VARCHAR(100)
)
|
Това може да се използва като референтен тригер; имайте предвид, че ще има отделен тригер за всяка таблица:
CREATE TRIGGER testtrigger BEFORE UPDATE ON <table_name>
FOR EACH ROW BEGIN
INSERT INTO audit(old_data, new_data, tbl_name) VALUES (OLD.first_name, NEW.first_name, "testtable");
END;
|
Можете да имате няколко израза за вмъкване по един за всяка колона. Ако искате да поставите ограничение да не се вмъкват данните, които не са променени, можете да направите следната промяна в тригера:
IF(OLD.column_name <> NEW.column_name) THEN
--Your insert query here
ELSE
--NOOP
END IF;
Уведомете, ако е необходима повече информация.