Vấn đề ở đây là phạm vi của trình kích hoạt MySQL là cấp hàng, không phải cấp câu lệnh. Do đó, bên trong trình kích hoạt, bạn có quyền truy cập vào các giá trị CŨ và MỚI cho mỗi cột trong hàng đã cho, nhưng bạn không có quyền truy cập vào câu lệnh khiến trình kích hoạt kích hoạt.
Liên quan đến information_schema.processlist, không có gì thực sự được "lưu trữ" (vẫn tồn tại) trong chế độ xem đó. Nó chỉ là một giao diện SQL với danh sách xử lý và câu lệnh khiến trình kích hoạt kích hoạt không thể truy cập được trong phạm vi của trình kích hoạt.
Bạn đã nói rằng bạn không muốn bật nhật ký truy vấn chung và cách tiếp cận này không hoàn hảo vì nhiều lý do (bao gồm cả mức độ chi tiết của event_Time là 1 giây), nhưng đây là một ví dụ về cách bạn có thể viết lại trình kích hoạt của mình bằng cách sử dụng bảng general_log:
SET GLOBAL GENERAL_LOG='ON';
SET GLOBAL LOG_OUTPUT='TABLE';
DELIMITER ||
CREATE TRIGGER DEBUG_DATE BEFORE UPDATE ON db.tbl FOR EACH ROW
BEGIN
DECLARE Q MEDIUMTEXT;
SELECT argument INTO Q
FROM mysql.general_log
where thread_id = connection_id()
order by event_time desc
limit 1;
INSERT INTO db.tbl_log (INFO)
VALUES (Q);
END ||
DELIMITER ;