Aktuální SQL dotaz můžete získat jako řetězec s následujícím příkazem:
SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()
Takže co musíte udělat, je vytvořit TRIGGER
který běží na operacích vkládání a/nebo aktualizace ve vaší tabulce, což by mělo (i) získat aktuální příkaz SQL a (ii) vložte jej do jiné tabulky, například takto:
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 ;
Budete muset vytvořit dva spouštěče – jeden pro aktualizace a jeden pro vložení. Spouštěč vloží nový dotaz jako řetězec do app_sql_debug_log
tabulky v query
sloupec.