यहां मुद्दा यह है कि MySQL ट्रिगर्स का दायरा पंक्ति-स्तर है, न कि कथन-स्तर। इस प्रकार, ट्रिगर के भीतर आपके पास दी गई पंक्ति में प्रत्येक कॉलम के लिए पुराने और नए मानों तक पहुंच है, लेकिन आपके पास उस कथन तक पहुंच नहीं है जिसके कारण ट्रिगर सक्रिय हुआ।
Information_schema.processlist के संबंध में, उस दृश्य में वास्तव में कुछ भी "संग्रहीत" (जारी) नहीं है। यह प्रक्रिया सूची के लिए केवल एक SQL इंटरफ़ेस है, और ट्रिगर को सक्रिय करने वाला कथन ट्रिगर के दायरे में पहुंच योग्य नहीं है।
आपने कहा था कि आप सामान्य क्वेरी लॉग को सक्षम नहीं करना चाहते हैं, और यह दृष्टिकोण कई कारणों से सही नहीं है (इवेंट_टाइम 1 सेकंड की ग्रैन्युलैरिटी सहित), लेकिन यहां एक उदाहरण है कि आप अपने ट्रिगर का उपयोग करके फिर से कैसे लिख सकते हैं सामान्य_लॉग तालिका:
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 ;