sql >> Databasteknik >  >> RDS >> Mysql

Få hela MySQL-frågesträngen vid infogning eller uppdatering

Du kan få den aktuella SQL-frågan som en sträng med följande sats:

SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()

Så vad du måste göra är att skapa en TRIGGER som körs på infogning och/eller uppdateringsoperationer på din tabell som bör (i) hämta den aktuella SQL-satsen och (ii) infoga den i en annan tabell, som så:

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 ;

Du måste skapa två utlösare - en för uppdateringar och en för infogningar. Utlösaren infogar den nya frågan som en sträng i app_sql_debug_log tabell i query kolumn.



  1. Aggregera kolumner med ytterligare (distinkta) filter

  2. PHP-skript för att logga rådata för POST

  3. Posten som returneras från funktionen har kolumner sammanlänkade

  4. MySQL för varje alternativ för procedur