Sequelize-更新表已触发-不起作用

时间:2018-09-24 06:44:36

标签: node.js sql-server sequelize.js sequelize-auto

我有点喜欢Sequelize和Node.js

我正在尝试将Sequelize与MSSQL数据库一起使用,并弄清楚我可以使用它做什么。

我已经建立了连接,并基于现有表创建了模型。

该表上有多个触发器。

当我尝试执行类似的操作

sampletable.update({
  NAME: "TEST"
},
{
  where: {ID: 0},
  silent: true
},
).then(function(result){
  console.log(result);
})

其中“ sampletable”是导入的模型

var sampletable = sequelize.import('./models/sampletable.js');

使用“ SequelizeAuto”(基于现有表的结构)创建的

var SequelizeAuto = require('sequelize-auto')
var auto = new SequelizeAuto(config.database, config.username, config.password, config);
auto.run(function (err) {
  if (err) throw err;
});

我遇到以下错误

"Unhandled rejection SequelizeDatabaseError: The target table 'sampletable' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause."

声明已执行

Executing (default): UPDATE [sampletable] SET [NAME]=N'test' OUTPUT INSERTED.* WHERE [id] = 0

是否可以通过带有触发器的触发器来更新表?

如果是,有人可以向我指出正确的方向吗? 我已经搜索过doco,但是我找不到很多。

TIA

2 个答案:

答案 0 :(得分:1)

添加hasTrigger: true对我有用,但仅适用于将新元素插入表中。 在编辑表中的元素时,我看到了以下问题:

  

如果DML语句的目标表'RMA'包含不带INTO子句的OUTPUT子句,则该语句不能具有任何启用的触发器。服务器内部错误(500)。

我将node.js(节点表示)和Sequelize用于后端。 预先非常感谢。

答案 1 :(得分:0)

尝试将many=True添加到模型选项中。这样可以防止Tedious尝试从基表中输出结果,而改用临时表。