【发布时间】:2016-04-27 15:06:21
【问题描述】:
我目前正在使用 SQL Server 和 Sequelize 处理一个项目。尝试在具有关联触发器的表中插入行时遇到问题。
我能够找到有关问题https://github.com/sequelize/sequelize/issues/3284的此信息
我已经下载了 .js 文件,它说它可以与临时表一起使用来解决这个问题:
SequelizeDatabaseError:如果该语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句的目标表“tableA”不能有任何启用的触发器。
此解决方案对我不起作用,我在尝试重新使用已插入且无法访问所有变量的对象时遇到问题。
对于这个问题还有其他的解决方法吗?
这是我的代码:
return Person.create( { lastName: options.lastName,
name: options.name,
}, {transaction: t}).then(
function (person) {
return Student.create({ id :person.id,
numberRecord :'PF-'+person.id,
}, {transaction: t}).then(function (student) {
return Shoots.create({ id : person.id,
numberRecord :'PF-'+person.id
}, {transaction: t}).then(function (record) {
return StudentContract.create({
PersonID :person.id,
dateStart:'2016021 00:00:00.000',
endDate:'20161231 00:00:00.000',}
, {transaction: t}).then(function (contract) {
return student;
});
});
});
});
}).then(function (result) {
// Transaction has been committed
// result is whatever the result of the promise chain returned to the transaction callback is
console.log(result);
cb(null, result);
}).catch(function (err) {
// Transaction has been rolled back
// err is whatever rejected the promise chain returned to the transaction callback is
console.error(+err);
cb(err, "Transaction Failed");
});
使用上面链接中提供的解决方案时,它说找不到“id”属性。 'id' 在 Person 和 Student 中定义为主键。
sequelize 有什么想法或官方解决方案来解决这个问题吗?
谢谢!
【问题讨论】:
-
我忘了提到启用触发器的表是最后一个:StudentContract。谢谢
标签: sql-server node.js triggers sequelize.js