Mysql
 sql >> база данни >  >> RDS >> Mysql

Използване на MySQL тригери за регистриране на всички промени в таблицата във вторична таблица

Синтаксисът за вмъкване е

INSERT INTO table (columns_list) VALUES (values_list)

така че вашето вмъкване ще изглежда нещо подобно (аз не съм експерт по MySQL, но можете да отговаряте на заявката):

INSERT INTO data_tracking 
(`data_id` , `field` , `old_value` , `new_value` , `modified` ) 
VALUES 
(NEW.data_id, 'field1', OLD.field, NEW.field, CURRENT_DATETIME());

И го повторете за вариация на поле2 и поле3

Мисля, че това би било пълното задействане, моля, опитайте:

DELIMITER $$

DROP TRIGGER `update_data `$$

CREATE TRIGGER `update_data` AFTER UPDATE on `data_table`
FOR EACH ROW
BEGIN
    IF (NEW.field1 != OLD.field1) THEN
        INSERT INTO data_tracking 
            (`data_id` , `field` , `old_value` , `new_value` , `modified` ) 
        VALUES 
            (NEW.data_id, "field1", OLD.field1, NEW.field1, NOW());
    END IF;
    IF (NEW.field2 != OLD.field2) THEN
        INSERT INTO data_tracking 
            (`data_id` , `field` , `old_value` , `new_value` , `modified` ) 
        VALUES 
            (NEW.data_id, "field2", OLD.field2, NEW.field2, NOW());
    END IF;
    IF (NEW.field3 != OLD.field3) THEN
        INSERT INTO data_tracking 
            (`data_id` , `field` , `old_value` , `new_value` , `modified` ) 
        VALUES 
            (NEW.data_id, "field3", OLD.field3, NEW.field3, NOW());
    END IF;
END$$

DELIMITER ;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да преброим колко лекари са записани от всеки пациент?

  2. Неуспешно свързване:Достъпът е отказан за потребител 'root'@'localhost' (използвайки парола:ДА) от php функция

  3. json_encode не връща нищо

  4. Премахнете Mysql реда след определено време

  5. Как да съхранявате 128-битово число в една колона в MySQL?