我需要删除列上现有的外键约束,并添加一个具有相同名称的新约束,该约束引用另一个表的主键。
我遇到错误ERROR: Constraint type must be specified through options.type
。尽管我在选项对象中提供约束类型作为第三个参数。
下面是迁移代码以供参考。
async up(queryInterface, Sequelize){
const transaction = await queryInterface.sequelize.transaction();
try {
await queryInterface.removeConstraint(
'shipments',
'shipments_status_id_fkey',
{ transaction }
);
await queryInterface.addConstraint(
'shipments',
'status_id',
{
type: 'foreign key',
name: 'shipments_status_id_fkey',
references: {
table: 'statuses',
field: 'id'
},
transaction
}
);
await transaction.commit();
} catch (err) {
await transaction.rollback();
throw err;
}
}
答案 0 :(得分:3)
此处的文档显示选项应该是addConstraint
函数的第二个参数。
https://sequelize.org/master/class/lib/dialects/abstract/query-interface.js~QueryInterface.html#instance-method-addConstraint
await queryInterface.addConstraint(
'shipments',
{
type: 'foreign key',
fields: ['status_id']
name: 'shipments_status_id_fkey',
references: {
table: 'statuses',
field: 'id'
},
transaction
}
);