【发布时间】:2020-07-27 02:58:23
【问题描述】:
我现在试了两天,没有什么好结果。
transaction.query("INSERT INTO INVOICE (INVOICE_NO,INVOICE_NO_TMP,UNIT_TYPE,UNIT_TYPE_TEXT,TAX_PERCENT,QTY,SALE_PRICE,SERIALNUMBER,DISCOUNT,PARTNO,PARTNO_ID,DESCRIPTION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?) RETURNING ID",array, function(err, result) {
if (err){
res.end(err.toString());
transaction.rollback();
db.detach();
return result;
}
})
当我做一个新的查询时,它只会启动一个新的事务,我不能回滚或提交。我只收到这条消息: 无效的事务句柄(期望显式事务开始)
如何在每次进行新查询时保留第一笔交易? db.transaction 似乎正在启动一个事务,但是在其中运行查询时它只会启动新的。
db.transaction(Firebird.ISOLATION_READ_COMMITED, await async function(err,transaction) {
});
我想要这样:
transaction.query("INSERT INTO INVOICE (INVOICE_NO,INVOICE_NO_TMP,UNIT_TYPE,UNIT_TYPE_TEXT,TAX_PERCENT,QTY,SALE_PRICE,SERIALNUMBER,DISCOUNT,PARTNO,PARTNO_ID,DESCRIPTION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?) RETURNING ID",array, function(err, result) {
if (err){
res.end(err.toString());
transaction.rollback();
db.detach();
return result;
}
})
transaction.query("INSERT INTO INVOICE (INVOICE_NO,INVOICE_NO_TMP,UNIT_TYPE,UNIT_TYPE_TEXT,TAX_PERCENT,QTY,SALE_PRICE,SERIALNUMBER,DISCOUNT,PARTNO,PARTNO_ID,DESCRIPTION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?) RETURNING ID",array, function(err, result) {
if (err){
res.end(err.toString());
transaction.rollback();
db.detach();
return result;
}
})
transaction.commit(function(err) {
if (err)
transaction.rollback();
else
db.detach();
});
同一个交易。 我试了试,但没有成功。 我看到对于 mySQL 这很容易,但在 node-firebird 中却不是。 我查看了 github 中的测试索引,这有事务和多个插入,但这是完全错误的。这个测试没有展示如何在代码块之外使用相同的事务,所以它不是有用的信息。它不适用于遍历列表数组并进行插入。 我无法找到此信息仅适用于 node-firebird。 试图搜索示例,但它不存在。
【问题讨论】:
标签: node.js node-modules