Coldfusion:锁定数据库表以检查电子商务采购的库存

标签 coldfusion transactions e-commerce coldfusion-9

我在 Coldfusion 的电子商务网站上工作。存货数量有限。当一个人结帐时,我需要在那一刻检查库存数据库表并确保产品仍然可用。我担心会发生以下情况:

第 1 个人提交了他们的购物车以购买仅剩 1 件的产品。该代码开始从他们的信用卡中扣款,存储他们的登录信息。

对于同一产品,第 2 个人在第 1 个人之后提交了他们的购物车。第 1 个人的代码还没有达到将产品库存值减为 0 的程度。因此代码让第 2 个人购买了产品。

防止这种情况的最佳方法是什么?我在想我需要在代码周围放置一个 cftransaction 标签,该代码执行所有收费、添加登录信息,最后减少值(value)。一个简单的 cftransaction 标记是否锁定数据库直到它完成?我已经阅读了有关隔离级别的信息,但我仍然感到困惑。我是否需要对该 cftransaction 设置特殊的隔离级别?

最佳答案

您需要小心锁定的程度,因为您最终可能会遇到在等待锁定释放时超时的事务 - 并且让客户不满意!

您还需要注意另一种情况:用户 1 和用户 2 将相同的商品放入购物车。用户 1 完成结账,一路走到底。用户 2 开始打电话,然后在 10 分钟后回来完成。您的流程必须足够智能,以便在购买完成之前重新验证购物车商品。

我的建议是实现“软购买”流程,一旦有人开始结帐,这些商品就会被标记为“不可用于”其他任何人。如果购买完成,则转换为“硬购买”并且库存减少。如果用户没有完成购买,则释放“软购买”。

您可以在数据库表或软购买交易表中使用标志来指示软购买,具体取决于库存数据的存储方式。

关于Coldfusion:锁定数据库表以检查电子商务采购的库存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5873218/

相关文章:

postgresql - PostgreSQL 中的 INSERT 和事务序列化

java - JPA 一个事务内的多次提交

ruby-on-rails - 即将创建我自己的网上商店?优点和缺点

html - 十六进制颜色代码倍数 #

sql - 将 Excel 电子表格导入 SQL 数据库 (Coldfusion 9)

java - 使用 JSch 库中的服务器指纹而不是设置公钥文件

ruby-on-rails-3 - 即使事务回滚,Rails 也会在事务中保存记录?

php - 无论允许访客结帐设置如何,Magento 访客结帐选项都不会显示

database - 电子商务的 NoSql 数据模型

orm - Coldfusion ORM NTEXT 类型导致返回 'dbo' 而不是对象