gpt4 book ai didi

mysql - 如何在 sequelize 中为外键定义名称

转载 作者:行者123 更新时间:2023-11-29 03:22:42 27 4
gpt4 key购买 nike

例如,我有几个由这个伪代码表示的表:

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

所以问题是:

  1. 如何通过sequelize手动更改列的外键名?
  2. 是否可以用相同的方式为迁移创建索引和外键?
  3. 是否可以通过 sequelize 创建外键?

在某些情况下,我使用 query-generator 但它提供的功能并不多。

注意事项:

正如我目前看到的 (12/21/2016),此功能已开发了很长时间:https://github.com/sequelize/sequelize/issues/5212

相关问题:https://github.com/sequelize/sequelize/issues/966

最佳答案

这是我使用迁移的解决方案:

'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;");
}
};

关于mysql - 如何在 sequelize 中为外键定义名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41266438/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com