Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menggunakan pemicu MySQL untuk mencatat semua perubahan tabel ke tabel sekunder

Sintaks insertnya adalah

INSERT INTO table (columns_list) VALUES (values_list)

jadi sisipan Anda akan terlihat seperti ini (saya bukan ahli MySQL tetapi Anda dapat memasukkan kueri):

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

Dan ulangi untuk variasi pada field2 dan field3

Saya pikir ini akan menjadi pemicu yang lengkap, silakan coba:

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. MySQL di Cloud - Migrasi Online dari Amazon RDS ke Server Anda sendiri:Part2

  2. Setel bidang Peningkatan Otomatis mulai dari 1000 di laravel migrasi 5.1

  3. Cara menyimpan tanggal berulang dengan mengingat Waktu Musim Panas

  4. Mengapa sintaks yang diberikan valid di mysql?

  5. Bagaimana saya bisa mengatur kata sandi mysql di skenario mysqld_safe sedang berjalan?