gpt4 book ai didi

node.js - Sequelize 。使用迁移创建外键时如何将 OnUpdate 设置为 NO ACTION

转载 作者:行者123 更新时间:2023-12-03 22:32:17 25 4
gpt4 key购买 nike

我是 nodejs 的新手。我用 expressJs 创建了一个模板。出于迁移和 ORM 的目的,我使用带有 mysql2 插件的 squelizeJs。我已经为我的表创建了迁移和模型。但是我无法更改创建外键时的默认行为,即更改 onUpdateonDelete 的值
如何在 sequelize 迁移中实现此 SQL 查询?

CONSTRAINT `fk_keywords_2`
FOREIGN KEY (`bot_id`)
REFERENCES `mydb`.`bots` (`id`)
ON DELETE RESTRICT
ON UPDATE NO ACTION)
我试过了
'use strict';
module.exports = {
up: async (queryInterface, Sequelize) => {
await queryInterface.createTable('Keywords', {
id: {
allowNull: false,
autoIncrement: true,
primaryKey: true,
type: Sequelize.INTEGER.UNSIGNED
},
bot_id: {
allowNull: false,
type: Sequelize.INTEGER.UNSIGNED,
references: {
model: 'Bots',
key: 'id'
},
onUpdate: 'NO ACTION',
onDelete: 'RESTRICT'
},
parent_id: {
type: Sequelize.INTEGER.UNSIGNED
},
keyword: {
allowNull: false,
type: Sequelize.STRING
},
time_duration: {
type: Sequelize.STRING
},
is_all_message_config: {
allowNull: false,
type: Sequelize.BOOLEAN,
defaultValue: 0
},
is_catch_all_config: {
allowNull: false,
type: Sequelize.BOOLEAN,
defaultValue: 0
},
blockedAt: {
type: Sequelize.DATE
},
deletedAt: {
type: Sequelize.DATE
},
createdAt: {
allowNull: false,
type: Sequelize.DATE
},
updatedAt: {
allowNull: false,
type: Sequelize.DATE
}
}, {
uniqueKeys: {
keyword_unique_for_bot_and_parent: {
customIndex: true,
fields: ['bot_id', 'parent_id', 'keyword', 'deletedAt']
}
}
});
},
down: async (queryInterface, Sequelize) => {
await queryInterface.dropTable('Keywords');
}
};
它创建了一个外键,但是 onUpdateonDelete 都设置为 RESTRICT我浏览了他们的文档,但找不到有用的东西。

最佳答案

您应该尝试在您的 关键字 模型文件中添加该操作,我们可以在其中定义关联。

static associate(models) {
// define association here
Keywords.hasMany(models.Bots, {
foreignKey: 'id',
onUpdate: 'RESTRICT',
onDelete: 'RESTRICT'
});
};
谢谢

关于node.js - Sequelize 。使用迁移创建外键时如何将 OnUpdate 设置为 NO ACTION,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65716850/

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