Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Holen Sie sich die vollständige MySQL-Abfragezeichenfolge beim Einfügen oder Aktualisieren

Die aktuelle SQL-Abfrage erhalten Sie als String mit folgender Anweisung:

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

Sie müssen also einen TRIGGER erstellen das bei Einfüge- und/oder Aktualisierungsvorgängen in Ihrer Tabelle ausgeführt wird, was (i) sein sollte Holen Sie sich die aktuelle SQL-Anweisung und (ii) fügen Sie es wie folgt in eine andere Tabelle ein:

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 ;

Sie müssen zwei Trigger erstellen – einen für Aktualisierungen und einen für Einfügungen. Der Trigger fügt die neue Abfrage als Zeichenfolge in das app_sql_debug_log ein Tabelle in der query Spalte.