在系统MySQL中出现错误

时间:2012-11-28 14:17:41

标签: php mysql mysqli

在旧的基于旧版的系统中,我们会对用户广告资源进行更新。库存包含许多不同的商品,用户每个商品ID会有一行,每行都是他们拥有的商品数量。

现在,在这个相当古老而又庞大的代码中的某个地方存在一个问题,即用户最终可能会得到减去数量的项目。这绝不应该发生。

与其从顶部处理问题并浏览与库存表交互的每段代码,我们可能会尝试创建一些报告来帮助我们找到问题。

在我开始实施我认为可能解决这个问题的事情之前,我想我会把它放到社区那里,以了解他们如何接近它。

也许可以从创建更新MySQL规则开始,该规则将活动插入到另一个表中以便进行更仔细的检查等。具有创造性。

1 个答案:

答案 0 :(得分:1)

如果添加时间戳字段,那么您将知道上次执行操作的时间 - 从中​​可以找到mysql日志中的te更新条目,并可能与应用程序日志协调。

或者你可以在桌子上设置一个触发器......

CREATE TRIGGER no_negatives_in_yourtable
BEFORE UPDATE ON yourtable
FOR EACH ROW
BEGIN
  IF (NEW.value<0) THEN
     /* log it (NB will be rolled back if subsequent statement enabled */
     INSERT INTO badthings (....) VALUES (...);
     /* this forces the operation to fail */
     DROP TABLE `less than zero value in yourtable`;
  END IF;
END