我需要删除一列上现有的外键约束,并添加一个同名的新约束,该约束引用另一个表的主键。
我收到一个错误错误:必须通过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;
}
}
这里的文档显示选项应该是AddConstraint
函数的第二个参数。
await queryInterface.addConstraint(
'shipments',
{
type: 'foreign key',
fields: ['status_id']
name: 'shipments_status_id_fkey',
references: {
table: 'statuses',
field: 'id'
},
transaction
}
);