node.js mysql 池 beginTransaction & 连接
Posted
技术标签:
【中文标题】node.js mysql 池 beginTransaction & 连接【英文标题】:node.js mysql pool beginTransaction & connection 【发布时间】:2018-05-28 07:14:40 【问题描述】:我一直想知道 node.js mysql 中的 beginTransaction
是在池中使用多个连接(如果我在事务中有多个查询),还是在提交之前只使用一个连接?
【问题讨论】:
【参考方案1】:一个事务不能被多个数据库连接共享,并且总是被限制为一个连接。最好的方法是在开始事务之前从池中获取连接,并在回滚或提交后释放它。
pool.getConnection(function(err, connection)
connection.beginTransaction(function(err)
if (err) //Transaction Error (Rollback and release connection)
connection.rollback(function()
connection.release();
//Failure
);
else
connection.query('INSERT INTO X SET ?', [X], function(err, results)
if (err) //Query Error (Rollback and release connection)
connection.rollback(function()
connection.release();
//Failure
);
else
connection.commit(function(err)
if (err)
connection.rollback(function()
connection.release();
//Failure
);
else
connection.release();
//Success
);
);
);
);
【讨论】:
所以如果一个事务中有多个查询,我需要在提交或回滚后释放它吗?我不t need to release it every success of query? correct me if i
m 错了,非常感谢
是的,您只需要在提交或回滚后释放它,因为这些是您结束事务的唯一情况。
这对我很有帮助。请对此给予更多支持。以上是关于node.js mysql 池 beginTransaction & 连接的主要内容,如果未能解决你的问题,请参考以下文章
node.js mysql 池 beginTransaction & 连接