0

在旧的基于遗留系统的系统中,我们对用户库存进行更新。库存包含许多不同的项目,用户每个项目 id 将有一行,每行是他们拥有的该项目的数量。

现在,在这个相当古老和庞然大物的代码中的某个地方是一个问题,用户最终可能会得到一个负数量的项目。这不应该发生。

我们认为我们可以尝试创建一些报告来帮助我们找到问题,而不是从顶部处理问题并遍历与库存表交互的每段代码。

在我开始实施一些我认为可以解决这个问题的东西之前,我想我会把它发布给社区,看看他们如何解决这个问题。

也许可以从创建更新 MySQL 规则开始,将活动插入另一个表以进行更仔细的检查等。要有创意。

4

1 回答 1

1

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

或者,您可以在桌子上设置触发器...

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
于 2012-11-28T14:33:18.827 回答