Я не знаю, если это возможно, но я хочу, чтобы отслеживать изменения в таблице 1.Mysql Триггеры: Отслеживание изменений
В базе данных следующие две таблицы существует:
CREATE TABLE IF NOT EXISTS `db`.`table1` (
`idtable1` INT NOT NULL AUTO_INCREMENT,
`A` VARCHAR(45) NULL,
`B` VARCHAR(45) NULL,
`C` VARCHAR(45) NULL,
PRIMARY KEY (`idtable1`))
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `db`.`table2history` (
`idtable2history` INT NOT NULL AUTO_INCREMENT,
`columnName` ENUM('A', 'B', 'C') NULL,
`columnPrimaryKey` INT NULL,
`columnNewValue` VARCHAR(45) NULL,
`changetimestamp` DATETIME NULL,
PRIMARY KEY (`idtable2history`))
ENGINE = InnoDB
Если следующие инструкции выполняются:
UPDATE table1 SET A="ABC", B="XYZ" WHERE idtable1=50;
Триггер "ПЕРЕД UPDATE" следует выполнить:
INSERT INTO table2history (idtable2history, columnName, columnPrimaryKey, columnNewValue, changetimestamp)
VALUES (NULL, "A", "50", "ABC", NOW());
INSERT INTO table2history (idtable2history, columnName, columnPrimaryKey, columnNewValue, changetimestamp)
VALUES (NULL, "B", "50", "XYZ", NOW());
Если следующие инструкции выполняются:
UPDATE table1 SET A="123", B="456", C="789" WHERE idtable1=20;
Триггер "ПЕРЕД UPDATE" следует выполнить:
INSERT INTO table2history (idtable2history, columnName, columnPrimaryKey, columnNewValue, changetimestamp)
VALUES (NULL, "A", "20", "123", NOW());
INSERT INTO table2history (idtable2history, columnName, columnPrimaryKey, columnNewValue, changetimestamp)
VALUES (NULL, "B", "20", "456", NOW());
INSERT INTO table2history (idtable2history, columnName, columnPrimaryKey, columnNewValue, changetimestamp)
VALUES (NULL, "C", "20", "789", NOW());
Вы знаете, интеллектуальное решение для Эта проблема?
Да, этого можно достичь. что ты уже испробовал? – Shadow
создайте копию таблицы с тремя полями больше. временную метку, тип, в котором вы храните вставку, удаление или обновление и поле для имени пользователя. Создайте 3 тигра на INSERT, UPDATE, DELETE, где поместите строку отверстий в новую таблицу и добавьте временную метку, тип и пользователь. так что вы можете откатываться каждый раз и посмотреть, какое изменение –
Благодарю вас за ответы. @ bernd-buffen Спасибо за возможное решение. Но я должен был реализовать его точно так, как описано выше. –