php - MySQL:使用数据库触发器还是只使用 PHP?

标签 php mysql amazon-mws

我正在为在亚马逊市场上销售的卖家创建一个网络应用程序。这个应用程序使用亚马逊的 API 下载他们的订单,然后计算他们支付给亚马逊的费用。这是应用程序的主要功能。它用于根据这些数据生成易于理解的报告。每个订单中都有 1 个或多个订单商品,每个订单商品都有特定的属性,例如重量、尺寸等。

亚马逊向其卖家收取一系列不同的费用,例如每笔订单费用、每件订单商品费用、使用亚马逊物流计划的订单商品配送费用、基于订单商品重量的重量费用,等等。关于卖家支付某种费用的不同场景,我总共计算了大约 30 个不同的变量。

对于数据库,我目前有 6 个表与我的问题相关:amazon_order_items 表包含每个订单和该订单中的每个订单项目以及计算费用的所有必要属性。我还有 4 个专门为存储费用而创建的其他表。由于这些费用的类型不同,我为所有这些费用创建了单独的表格。

目前,我有一个 INSERT 触发器设置,只要将新的订单商品行插入到 amazon_order_items 表中,它就会触发。然后它从这 4 个其他费用表中提取并将匹配的行插入到 amazon_order_items_fees 表中。有一段时间,它运行良好,尽管是一个极其丑陋的触发器。我选择了触发器,因为我认为在插入订单项时将费用自动插入数据库会非常有益。这正在变成一场灾难。

亚马逊不断改变他们的费用结构,事实证明,使用我使用的触发器很难保持准确的费用数字。我的问题是,我应该继续使用数据库触发器来计算费用并将它们插入数据库表中,还是应该放弃所有设计并简单地使用 PHP 插入订单项目和相应的费用?

最佳答案

触发器更适用于您的应用程序不一定知道数据库中的更改/事件的情况。如果您将逻辑保留在实际应用程序中,那么在应用程序级别发生的事情总是会更加透明。

一般来说,触发器更难维护,如果某些东西没有正常运行,也更难调试。仅出于这些原因,我建议在应用程序的 amazon_order_items_fees 表部分插入内容,特别是因为您已经提到他们经常更改费用结构。

希望能帮助您做出决定!

关于php - MySQL:使用数据库触发器还是只使用 PHP?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18708257/

相关文章:

javascript - 打印 Html 输出在新窗口中打开

php - 如何在android中使用MySql服务器(在桌面上下载)?

php - PSR-0 代表什么?

php - 获取 Laravel 坐标半径范围内的用户

java - 亚马逊 MWS - getOrders

python - 如何通过亚马逊 MWS API 上传/发布产品到亚马逊?

delphi - 在 Delphi 2007 中对 Amazon 进行 HTTPS POST 调用

php - 显示没有索引键的数组

javascript - 尝试自动访问使用 Javascript 加密表单数据的 Web 界面

php - AJAX 在 PHP 中发布给自己