È possibile ottenere la query SQL corrente come stringa con la seguente istruzione:
SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()
Quindi quello che devi fare è creare un TRIGGER
che viene eseguito su operazioni di inserimento e/o aggiornamento sulla tabella che dovrebbe (i) ottenere l'istruzione sql corrente e (ii) inseriscilo in un'altra tabella, in questo modo:
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 ;
Dovrai creare due trigger:uno per gli aggiornamenti e uno per gli inserti. Il trigger inserisce la nuova query come stringa nel app_sql_debug_log
tabella nella query
colonna.