提问者:小点点

使用node.js中的mssql模块,事务没有按预期回滚


事实上,我已经找到了这个问题的答案,只是想记录下我的发现。

问题的原因如下:

let transaction = new sql.Transaction(pool);
await transaction.begin();
await pool.request (transaction).query (" *** SOME SQL *** ");
await transaction.rollback();

事务完全不会回滚。


共1个答案

匿名用户

为了解决这个问题,我最终使用了new sql.request(transaction)而不是pool.request(transaction)。 代码如下所示:

let transaction = new sql.Transaction(pool);
await transaction.begin();
await new sql.Request (transaction).query (" *** SOME SQL *** ");
await transaction.rollback();

我没有深入挖掘以找出连接池如何工作的实际机制,但与sql.request类构造函数不同的是,pool.request方法似乎不接受事务参数(有知识的人请告诉我们这是否属实)。