首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在node-oracledb中使用事务

在node-oracledb中使用事务
EN

Stack Overflow用户
提问于 2019-05-29 17:05:32
回答 2查看 3K关注 0票数 1

我需要在一个事务中执行3个不同的update语句。我正在使用node-oracle包。有没有一个例子来说明交易是如何进行的?

EN

回答 2

Stack Overflow用户

发布于 2019-05-29 17:41:35

最初,您可以将autoCommit设置为false,一旦任务完成,您就可以提交它。

通过使用连接函数connection.commit(function(error))

示例:

代码语言:javascript
复制
var oracledb = require('oracledb');
oracledb.autoCommit = false;

当connection.execute()被成功执行时,您可以像下面这样提交它

代码语言:javascript
复制
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);
        });
      }
    });
票数 1
EN

Stack Overflow用户

发布于 2019-05-31 19:52:08

这里有examples in the node-oracledb GitHub repo。示例已经更新为使用Node.js 8的异步/等待样式,使其更容易理解和正确(但不要忘记使用await)。另外,请阅读manual

您需要的示例是insert1.js,它显示了构成一个事务的3条语句。前两条语句不提交,但最后一条语句使用autoCommit (这节省了显式commit()的成本):

代码语言:javascript
复制
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 script
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56356869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档