次のステートメントを使用して、現在のSQLクエリを文字列として取得できます。
SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()
したがって、あなたがしなければならないのは、TRIGGER
を作成することです。 これは、テーブルの挿入および/または更新操作で実行されます。(i) 現在のSQLステートメントと(ii)を取得します 次のように、別のテーブルに挿入します:
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 ;
2つのトリガーを作成する必要があります。1つは更新用、もう1つは挿入用です。トリガーは、新しいクエリを文字列として app_sql_debug_log
に挿入します query
のテーブル 列。