是否可以记录特定查询?如何记录特定查询?
我在一场意想不到的比赛中有一些比赛。匹配可以退出的唯一方法是如果UPDATE查询将“matchStatus”的值设置为2连续。是否有可能记录所有这样做的查询?在那种情况下,你如何做到这一点?
e.g
$query = "UPDATE active_matches SET matchStatus = '2' WHERE match_id='$match_id'";
感谢
是否可以记录特定查询?如何记录特定查询?
我在一场意想不到的比赛中有一些比赛。匹配可以退出的唯一方法是如果UPDATE查询将“matchStatus”的值设置为2连续。是否有可能记录所有这样做的查询?在那种情况下,你如何做到这一点?
e.g
$query = "UPDATE active_matches SET matchStatus = '2' WHERE match_id='$match_id'";
感谢
另一种解决方案稍微复杂一点,但可能更适合您的需求,但可能并不适合您的需求,它是创建一个日志表,触发器在执行此类更新查询时插入条目:
CREATE TABLE AugitLog (
`Timestamp` TIMESTAMP,
`User` VARCHAR(16),
`Host` VARCHAR(255),
`MatchID` INT
);
DELIMITER ;;
CREATE TRIGGER audit_match_termination AFTER UPDATE ON active_matches FOR EACH ROW
IF OLD.matchStatus <> 2 AND NEW.matchStatus = 2 THEN
INSERT INTO AuditLog VALUES (
NOW(), -- timestamp
SUBSTRING_INDEX(USER(),'@', 1), -- username
SUBSTRING_INDEX(USER(),'@',-1), -- hostname
NEW.match_id -- the match that was terminated
);
END IF;;
DELIMITER ;
里面你my.conf
文件中添加一行
log = /var/log/mysql/someLog.log
重启mysqld,你就会有这些查询放在这里的日志。
以后你可以简单的grep值超出日志文件按您的需求:
grep 'UPDATE active_matches' someLog.log
匹配与* UPDATE active_matches *和输出,很明显,如果你想查询你可以换着花样的所有行还要别的吗。
你想让一些文件在你的所有查询中? – 2012-04-28 13:58:19
是的,先生!那会很好 – BlackMouse 2012-04-28 13:59:20
是的,但不是通过任何预制的mysql/php机制 - 用'if($ matchStatus = 2){log query}'类型构造包装你的'$ query = ...'行。 – 2012-04-28 14:00:08