【发布时间】:2014-02-19 23:37:52
【问题描述】:
我正在使用 express 和 node-mysql 驱动程序在 node.js 上构建应用程序。当我需要进行一系列数据库插入/更新时,我的应用程序中有几种情况。我希望它们在一个事务中,如果第二个或第三个失败,以前的插入完全回滚。
目前,我这样做的方式是让某种中间件在请求到达时执行START TRANSACTION。在处理请求的过程中,如果抛出任何错误,我会捕获此错误,并执行ROLLBACK。如果没有发生错误,我会在将响应发送到浏览器之前执行COMMIT。
但是,我现在担心当多个用户同时访问应用程序时这将不起作用,因为如果另一个请求尝试使用 START TRANSACTION 开始它自己的事务,MySQL 会强制提交!我目前只使用一个节点实例,并为所有请求使用一个 MySQL 连接。
如果我的担忧是正确的,有人可以给我建议吗?我应该如何获得交易支持?
【问题讨论】:
-
如果您可以选择使用 couch / redis / mongo 代替,因为它们更容易与 node 一起使用。如果您已经有一个 MYSQL 数据库,请继续使用它。
-
@Raynos AFAIK MongoDb 不支持事务...
标签: javascript mysql database transactions node.js