gau*_*rus 2 sql-server triggers node.js sequelize.js
我目前正在一个项目上使用 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");
});
Run Code Online (Sandbox Code Playgroud)
当使用上面链接中提供的解决方案时,它说找不到“id”属性。'id' 在 Person 和 Student 中定义为主键。
续集有任何想法或官方解决方案可以解决此问题吗?
谢谢!
定义表时设置hasTrigger为 true,Sequelize 会为您处理这个问题。例如:
sequelize.define(TABLE_NAME,
{
id: {
type: Sequelize.INTEGER,
allowNull: false,
primaryKey: true
},
description: {
type: Sequelize.VARCHAR(8000)
}
},
{
// options
timestamps: false,
hasTrigger: true
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2458 次 |
| 最近记录: |