Подскажите пожалуйста, возможно ли сделать логирование запросов к определенной таблицы и как. Интересует конкретная таблица с действиями update/delete Спасибо!!!
Код (Text): DELIMITER | CREATE TRIGGER `trigger_test` AFTER DELETE ON `table` FOR EACH ROW BEGIN INSERT INTO trigger_log Set msg = 'DELETE', row_id = OLD.id; END; Подобный вариант работает конечно, но мне необходимо знать и вызов скрипта или хотябы увидеть полностью запрос. Есть варианты какие-нибудь ещё? Если включать полное логирование, то там жесть что будет происходить, мне незачем фулл таблицы и действия логировать.
Вариант с записью полного запроса есть. Уже лучше! Код (Text): DROP TRIGGER IF EXISTS `trigger_test`; DELIMITER // CREATE TRIGGER `trigger_test` BEFORE DELETE ON `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 trigger_log Set msg = `original_query`, row_id = OLD.id; END; // DELIMITER ; Но блин, хотелось бы и всё остальное определить, есть предложения как дополнить? файл/вызов, такое в природе вообще возможно с триггерами? спасибо за ответы знающих.
В PHP на данный момент не варик, уж очень большая "система" и процесс удаления происходят в 30 местах как минимум при определенных обстоятельствах. Ну и написана она уж очень давно. Подключена одна общая функция (которая и удаляет данные), но и используется она не везде, конечно логирование туда записать можно, но в остальных случаях нет. Что-то хочется более рентабельное, чем лезть в код везде.
mysql не знает о вызывающей стороне практически ничего. +1. но это если везде используется единая обертка над mysqli/pdo. а если код безумная лапша, то придётся сначала навести порядок.