如何为级联约束创建迁移?



如何创建迁移以添加级联约束?

这是我的代码

'use strict';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.sequelize.transaction((t) => {
return Promise.all([
queryInterface.addConstraint("cars", "user_id", {
// onDelete: "CASCADE",
allowNull: false
}, {
transaction: t
})
])
})
},
down: (queryInterface, Sequelize) => {
return queryInterface.sequelize.transaction((t) => {
// return Promise.all([
// ])
})
}
};

我不知道如何向现有外键添加约束

我认为您只能通过删除约束然后使用更改表的原始查询重新创建它来做到这一点。 如下所示:

var table = 'YOURTABLENAME';
var constraint = 'YOURCONSTRAINTNAME';
var constraintFkey = 'CONSTRAINTFKEY';
module.exports = {
up: (queryInterface, Sequelize) => {
return queryInterface.sequelize.query(`alter table "${table}" drop constraint "${constraint}"`)
.then(() => queryInterface.sequelize.query(
`alter table "${table}"
add constraint "${constraint}" foreign key("${constraintFkey}") references "users" ("user_id")
on delete cascade`
));
},
down: (queryInterface, Sequelize) => {
return queryInterface.sequelize.query(`alter table "${tableName}" drop constraint "${constraintName}"`)
.then(() => queryInterface.sequelize.query(
`alter table "${tableName}"
add constraint "${constraintName}" foreign key("${constraintFkey}") references "users" ("user_id")
on delete no action`
));
},
};

最新更新