Tim*_*Tru 2 oracle node.js sql-insert
根据SQL查询,我遇到了问题。我的插入查询返回的答案是元组已成功插入,但表中实际上没有元组。因此由于某些原因,它不起作用。查询:
connection.execute(
"INSERT INTO "+table+
" VALUES "+
"(:0, :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11)",
[objIns.attr1, objIns.attr2, objIns.attr3, objIns.attr4, objIns.attr5, objIns.attr6, objIns.attr7, objIns.attr8, objIns.attr9, objIns.attr10, objIns.attr11, objIns.attr12],
function(err, result){
if (err) {
console.error("insert2",err.message);
callback(err.message)
} else{
console.log("Rows inserted " + result.rowsAffected);
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢。
** UPDATE_SOLUTION1:添加到您的服务器脚本中:oracledb.autoCommit = true; **
** UPDATE_SOLUTION2:将{autoCommit:true}添加到execute()**
全局oracledb.autoCommit = true会导致过量使用,这是浪费资源,并且可能意味着如果应用程序的某些部分失败,则无法回滚到所需的数据状态。
如果您知道应该立即提交特定的插入语句,则最有效的方法是添加等效的execute()选项,autoCommit例如:
connection.execute(
"INSERT INTO "+table+
" VALUES "+
"(:0, :1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11)",
[objIns.attr1, objIns.attr2, objIns.attr3, objIns.attr4, objIns.attr5, objIns.attr6, objIns.attr7, objIns.attr8, objIns.attr9, objIns.attr10, objIns.attr11, objIns.attr12],
{ autoCommit: true },
function(err, result){
...
Run Code Online (Sandbox Code Playgroud)
如果您不希望在之后执行execute(),则可以commit()在以后的任意时间使用显式命令。请注意,这需要“往返”到数据库服务器,autoCommit这不同于“ ggy带”到execute()调用中的选项。不必要的往返会降低最终的可伸缩性。
请参阅文档:https : //github.com/oracle/node-oracledb/blob/master/doc/api.md#transactionmgt