Mysql
 sql >> Base de données >  >> RDS >> Mysql

Obtenir la chaîne de requête MySQL complète lors de l'insertion ou de la mise à jour

Vous pouvez obtenir la requête SQL actuelle sous forme de chaîne avec l'instruction suivante :

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

Donc, ce que vous avez à faire est de créer un TRIGGER qui s'exécute sur les opérations d'insertion et/ou de mise à jour sur votre table qui doivent (i) obtenir l'instruction sql actuelle et (ii) insérez-le dans un autre tableau, comme ceci :

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 ;

Vous devrez créer deux déclencheurs - un pour les mises à jour et un pour les insertions. Le déclencheur insère la nouvelle requête sous forme de chaîne dans le app_sql_debug_log table dans la query colonne.