Bạn có thể nhận truy vấn SQL hiện tại dưới dạng một chuỗi với câu lệnh sau:
SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()
Vì vậy, những gì bạn phải làm là tạo một TRIGGER
chạy trên các thao tác chèn và / hoặc cập nhật trên bảng của bạn nên (i) lấy câu lệnh sql hiện tại và (ii) chèn nó vào một bảng khác, như vậy:
DELIMITER |
CREATE TRIGGER log_queries_insert BEFORE INSERT ON `your_table`
FOR EACH ROW
BEGIN
DECLARE original_query VARCHAR(1024);
SET original_query = (SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID());
INSERT INTO `app_sql_debug_log`(`query`) VALUES (original_query);
END;
|
DELIMITER ;
Bạn sẽ phải tạo hai trình kích hoạt - một để cập nhật và một để chèn. Trình kích hoạt sẽ chèn truy vấn mới dưới dạng chuỗi trong app_sql_debug_log
trong query
cột.