我需要在一个事务中执行3个不同的update语句。我正在使用node-oracle包。有没有一个例子来说明交易是如何进行的?
发布于 2019-05-29 17:41:35
最初,您可以将autoCommit设置为false,一旦任务完成,您就可以提交它。
通过使用连接函数connection.commit(function(error))
示例:
var oracledb = require('oracledb');
oracledb.autoCommit = false;当connection.execute()被成功执行时,您可以像下面这样提交它
conn.execute(
"INSERT INTO test VALUES (:id, :nm)",
[2, 'Alison'], // Bind values
function(err, result) {
if (err) {
return cb(err, conn);
} else {
console.log("Rows inserted: " + result.rowsAffected); // 1
conn.commit((error)=> {
console.log('Error : ', error);
});
}
});发布于 2019-05-31 19:52:08
这里有examples in the node-oracledb GitHub repo。示例已经更新为使用Node.js 8的异步/等待样式,使其更容易理解和正确(但不要忘记使用await)。另外,请阅读manual。
您需要的示例是insert1.js,它显示了构成一个事务的3条语句。前两条语句不提交,但最后一条语句使用autoCommit (这节省了显式commit()的成本):
result = await connection.execute(
`INSERT INTO test VALUES (:id, :nm)`,
{ id : {val: 1 }, nm : {val: 'Chris'} });
result = await connection.execute(
`INSERT INTO test VALUES (:id, :nm)`,
[2, 'Alison']);
result = await connection.execute(
`UPDATE test SET name = :nm`,
['Bambi'],
{ autoCommit: true }); // commit once for all DML in the scripthttps://stackoverflow.com/questions/56356869
复制相似问题