![](/img/trans.png)
[英]How to choose name of Foreign Key column using Sequelize and mySql?
[英]How to define a name for a foreign key in sequelize
例如,我有一些用该伪代码表示的表:
let user = sequelize.define('User', /* attributes */);
let task = sequelize.define('Task', /* attributes */);
task.belongsTo(user, { foreignKey: "userId" });
sequelize.sync();
结果task
表:
CREATE TABLE `task` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`userId` INT(11) NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `userId` (`userId`),
CONSTRAINT `task_ibfk_1` FOREIGN KEY (`userId`) REFERENCES `user` (`id`) ON UPDATE CASCADE ON DELETE NO ACTION
)
它生成外键名称task_ibfk_1
所以问题是:
在某些情况下,我使用的是query-generator
但并没有提供太多。
笔记:
如我目前所见(2016/12/21),此功能已进行了很长时间: https : //github.com/sequelize/sequelize/issues/5212
这是我使用迁移的解决方案:
'use strict';
module.exports = {
up: function (queryInterface, Sequelize) {
return queryInterface.sequelize.query("ALTER TABLE task ADD CONSTRAINT task_ibfk_1 FOREIGN KEY (idUser) REFERENCES user(id) ON UPDATE CASCADE ON DELETE NO ACTION;");
},
down: function (queryInterface, Sequelize) {
return queryInterface.sequelize.query("ALTER TABLE task DROP FOREIGN KEY task_ibfk_1;");
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.