📜  sequelize 迁移添加列外键 - Javascript (1)

📅  最后修改于: 2023-12-03 15:05:10.658000             🧑  作者: Mango

Sequelize 迁移添加列外键

Sequelize 迁移是一种管理数据库模式变化的工具。使用迁移,你可以向数据表中添加列、修改结构或删除已有列。本文将讲解如何使用 Sequelize 迁移添加列外键。

前置要求
  • 已在项目中使用 Sequelize
  • 已对 Sequelize 迁移有一定了解
  • 已创建了需要添加外键的表格,并且已经进行迁移
添加外键

下面是一个示例,展示如何使用 Sequelize 迁移来添加外键:

module.exports = {
  up: (queryInterface, Sequelize) => {
    return queryInterface.addColumn(
      'Orders', // 表名
      'customerId', // 列名
      {
        type: Sequelize.INTEGER,
        references: {
          model: 'Customers', // 参考表名
          key: 'id' // 参考列名
        },
        onUpdate: 'CASCADE',
        onDelete: 'SET NULL'
      }
    );
  },

  down: (queryInterface, Sequelize) => {
    return queryInterface.removeColumn('Orders', 'customerId');
  }
};

这段代码使用 addColumn 方法为 Orders 表格添加了一列名为 customerId 的外键。具体地,在 options 参数中,我们指定了:

  • type: Sequelize.INTEGER,声明了这是一个整数类型的列;
  • references: {model: 'Customers', key: 'id'},指定了参考表格名称和参考列名称;
  • onUpdate: 'CASCADE' 和 onDelete: 'SET NULL' 分别指定了当参考列更新或删除时如何处理本表行的外键值。

down 方法中,我们再次使用了 Sequelize 迁移的内置方法 removeColumn 来将刚才添加的列删除。

总结

Sequelize 迁移可以轻松方便地为数据表添加列外键,只需通过 addColumn 方法指定实体名称、列名和选项。在 options 中,我们使用 references 来指定参考表和参考列,并使用 onUpdateonDelete 来定义外键的级联更新和级联删除行为。