Bieżące zapytanie SQL można uzyskać jako ciąg znaków za pomocą następującej instrukcji:
SELECT info FROM INFORMATION_SCHEMA.PROCESSLIST WHERE id = CONNECTION_ID()
Musisz więc utworzyć TRIGGER
który działa na operacjach wstawiania i/lub aktualizacji na twojej tabeli, które powinny (i) pobierz aktualną instrukcję sql i (ii) wstaw go do innej tabeli, na przykład:
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 ;
Będziesz musiał utworzyć dwa wyzwalacze — jeden dla aktualizacji i jeden dla wstawek. Wyzwalacz wstawia nowe zapytanie jako ciąg w app_sql_debug_log
tabela w query
kolumna.