You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将指定SQL建表语句转换为Sequelize实现?

将SQL建表语句转换为Sequelize实现

以下是对应你提供的SQL语句的Sequelize模型代码(适配Sequelize v6+版本):

const { Model, DataTypes } = require('sequelize');
const sequelize = require('./your-sequelize-instance'); // 替换为你的Sequelize实例路径

class FundraiserUpdate extends Model {}

FundraiserUpdate.init({
  updateId: {
    type: DataTypes.INTEGER,
    autoIncrement: true, // 对应SQL中的SERIAL自增类型
    allowNull: false
  },
  updateFundraiserId: {
    type: DataTypes.INTEGER,
    allowNull: false,
    references: {
      model: 'fundRaisers', // 关联的目标表名
      key: 'fundraiserId' // 关联的目标字段
    },
    onUpdate: 'CASCADE', // 可选:外键更新时的级联行为
    onDelete: 'CASCADE' // 可选:外键删除时的级联行为
  },
  updateTitle: {
    type: DataTypes.TEXT,
    allowNull: false
  },
  updateDescription: {
    type: DataTypes.TEXT,
    allowNull: false
  }
}, {
  sequelize,
  tableName: 'fundraiserUpdates', // 显式指定表名,与SQL定义一致
  primaryKey: ['updateId', 'updateFundraiserId'], // 配置复合主键
  timestamps: false // 关闭Sequelize默认生成的createdAt/updatedAt字段
});

module.exports = FundraiserUpdate;

核心对应说明:

  • SERIAL类型映射:PostgreSQL的SERIAL等价于Sequelize中INTEGER类型搭配autoIncrement: true配置。
  • 复合主键:通过模型配置项的primaryKey字段数组,实现SQL中的复合主键约束。
  • 外键约束:在updateFundraiserId字段的references属性中定义关联关系,可按需补充级联行为。
  • 表名一致性:通过tableName显式设置表名,避免Sequelize自动复数化模型名导致的表名不匹配。

内容的提问来源于stack exchange,提问作者MEet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 01:17:24