sql >> Database teknologi >  >> RDS >> Mysql

Få fuld MySQL-forespørgselsstreng ved indsættelse eller opdatering

Du kan få den aktuelle SQL-forespørgsel som en streng med følgende sætning:

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

Så hvad du skal gøre er at oprette en TRIGGER som kører på indsættelses- og/eller opdateringsoperationer på din tabel, som skal (i) få den aktuelle sql-sætning og (ii) indsæt det i en anden tabel, som sådan:

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 bliver nødt til at oprette to triggere - en til opdateringer og en til indsættelser. Triggeren indsætter den nye forespørgsel som en streng i app_sql_debug_log tabel i query kolonne.



  1. Ikke ubetydelig forskel i eksekveringsplanen med Oracle ved brug af jdbc Tidsstempel eller Dato

  2. Sådan overvåger du MySQL-implementeringer med Prometheus &Grafana på ScaleGrid

  3. VÆLG eller UDFØR i en PL/pgSQL-funktion

  4. Mysql tæller forekomster af understreng, og bestil derefter efter