Problem polega na tym, że zakres wyzwalaczy MySQL jest na poziomie wiersza, a nie na poziomie instrukcji. W związku z tym w wyzwalaczu masz dostęp do wartości STARY i NOWY dla każdej kolumny w danym wierszu, ale nie masz dostępu do instrukcji, która spowodowała uruchomienie wyzwalacza.
W odniesieniu do information_schema.processlist, nic nie jest w rzeczywistości "przechowywane" (utrwalane) w tym widoku. To tylko interfejs SQL do listy procesów, a instrukcja, która spowodowała uruchomienie wyzwalacza, nie jest dostępna w zakresie wyzwalacza.
Powiedziałeś, że nie chcesz włączać ogólnego dziennika zapytań, a to podejście nie jest idealne z wielu powodów (w tym z dokładnością do 1 sekundy), ale oto przykład, jak można ponownie napisać wyzwalacz za pomocą tabela 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 ;