sql >> Base de Datos >  >> RDS >> Mysql

Obtenga la cadena de consulta MySQL completa al insertar o actualizar

Puede obtener la consulta SQL actual como una cadena con la siguiente declaración:

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

Entonces lo que tienes que hacer es crear un TRIGGER que se ejecuta en operaciones de inserción y/o actualización en su tabla que debería (i) obtener la instrucción sql actual y (ii) insértelo en otra tabla, así:

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 ;

Tendrá que crear dos activadores:uno para actualizaciones y otro para inserciones. El disparador inserta la nueva consulta como una cadena en el app_sql_debug_log tabla en la query columna.