如何执行海量.js交易



我正在尝试实现一件非常简单的事情:

START TRANSACTION;
DELETE FROM table WHERE id = 1;
ROLLBACK;

postgres数据库上运行它非常有效。对于massive.js,它不会:

this.db.run(
"START TRANSACTION",
[]
); 
setTimeout(() => {
this.db.run(
"DELETE FROM table WHERE id = $1"
[1]
);
}, 2000);
setTimeout(() => {
this.db.run(
"ROLLBACK;"
[]
);
}, 4000);

它不会回滚更改,只是从数据库中删除。COMMIT也不起作用。怎么了?

有没有办法转储查询顺序?

Massive 在下面使用 pg-promise,这反过来又支持交易:

db.instance.tx(t => {
// BEGIN has been executed
return t.none('DELETE FROM table WHERE id = $1', [123])
.then(() => {
// Records have been deleted within the transaction
throw new Error('Random error to fail the transaction');
// = the same as returning Promise.reject(new Error('Random...'))
});
})
.catch(error => {
// ROLLBACK has been executed, no records end up deleted.
console.log(error);
});

另请参阅:

  • 访问驱动程序
  • 监视查询

有没有办法转储查询顺序?

监视查询演示了如何执行此操作,或者您可以在初始化db.driverConfig对象中添加事件查询处理程序massive

最新更新