0

嗨,伙计们,这可能会产生一个奇怪的问题,但这里有:

这只是一个基本示例,因此您可以理解我想要实现的目标。

如果我有一个带有两个表的 mysql 数据库:“liquid_avaliable”和“liquid_records”。Liquid avliable 将有 3 列 id、name、amount。Liquid_records 将具有 id、name、amount_used、liquid_avaliable_id。

是否有可能每次添加“流动记录”时从可用表中减去该金额。

目的是让您可以快速检查可用液体表,看看您还剩下多少。

如果有人能指出我正确的方向,将不胜感激。

我正在开发的应用程序是在“cakePHP”中构建的,我的数据库系统是 mysql,尽管 Postgre sql 也是可用的。

提前致谢。

4

2 回答 2

1

是的 - 您可以使用afterSave()回调方法。

保存 LiquidRecord 时它将自动触发 - 此时您可以添加逻辑以重新计算并将新总数保存到您的 LiquidAvailable 模型中。

另一种选择是查看CakePHP 的 Event System

于 2012-11-09T20:41:45.190 回答
1

你有几种方法可以解决这个问题。

(1) 你什么都不做,只计算运行时可用的数量。对于合理的硬件和中等大小的数据,这可能是一个可接受的解决方案。即使多达数十万行,性能也应该是合理的。

(2) 规范的数据库解决方案是使用触发器。在“液体记录”表上创建触发器。添加新记录时,从另一个表中减去或添加金额。

(3) 使用存储过程对表进行所有插入。这是我的首选方法。然后,存储过程可以增加或减少其他值(如果需要,还可以进行日志记录和其他操作)。

我建议您将所有数据操作包装到存储过程中,但继续 (1)。编写查询以从数据结构中获取您想要的内容。根据需要添加索引。如果这不起作用,则继续进行(3)。

于 2012-11-09T20:19:25.897 回答