Bạn có thể tạo một bản sao của cơ sở dữ liệu và đặt trình kích hoạt trên after delete
DELIMITER $$
CREATE TRIGGER ad_table1_each AFTER DELETE ON table1 FOR EACH ROW
BEGIN
INSERT INTO log VALUES (null /*autoinc id*/
, 'table1' /*tablename*/
, old.id /*tableid*/
, concat_ws(',',old.field1,old.field2 /*CSV's of fields*/
, NOW() /*timestamp*/
, 'delete'); /*what action*/
REPLACE INTO restore_table1 VALUES (old.id,
, old.field1
, old.field2
, ... );
END $$
DELIMITER ;
Bảng nhật ký chỉ là một bảng với các trường sau:
id integer autoincrement primary key
tablename varchar(45)
table_id integer
fields varchar(6000)
delete_time timestamp
action enum('insert','update','delete')
Nếu bạn thực hiện SELECT @last_id:= max(id) FROM log
trước khi xóa tầng trên bản sao.
Sau đó, bạn có thể thực hiện SELECT * FROM log WHERE id > @last_id
và nhận tất cả các hàng sẽ bị xóa trong tầng.
Sau đó, bạn có thể sử dụng restore_table1 để tạo lại các hàng đã bị xóa trong tầng trong cơ sở dữ liệu sao chép.