Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtenha a string de consulta completa do MySQL na inserção ou atualização


Você pode obter a consulta SQL atual como uma string com a seguinte instrução:
SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()

Então o que você precisa fazer é criar um TRIGGER que é executado em operações de inserção e/ou atualização em sua tabela que deve (i) obtenha a instrução sql atual e (ii) insira-o em outra tabela, assim:
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 ;

Você terá que criar dois gatilhos - um para atualizações e outro para inserções. O gatilho insere a nova consulta como uma string no app_sql_debug_log tabela na query coluna.