postgresql - 级联删除在 Sequelize 中不起作用

标签 postgresql sequelize.js

我有 2 个模型

var Professional = sequelize.define('professional', {
name: {
  type: DataTypes.STRING,
  unique: true
},
associate: function (models) {
    Professional.belongsTo(models.User,
        {
          foreignKey: {allowNull: false},
          onDelete: 'CASCADE'
        });
}}


var User = sequelize.define('user', {
name: {
  type: DataTypes.STRING,
  unique: true
},
associate: function (models) {
    User.hasOne(models.Professional,
        {
          foreignKey: {allowNull: true},
          onDelete: 'CASCADE'
        });
}}

但是当我删除一个 Professional 时,相应的用户不会被删除。

当我检查 postgres 约束看起来像
TABLE "professional" CONSTRAINT "professional_userId_fkey" FOREIGN KEY ("userId") REFERENCES "user"(id) ON UPDATE CASCADE ON DELETE CASCADE
谁能解释这种行为......?

最佳答案

您无法通过删除 user 中的行来删除 professional 表中的行,因此 user 表为主, professional 为次要(外键为 userId)。但是您可以通过删除用户行来删除专业行。

关于postgresql - 级联删除在 Sequelize 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40299616/

相关文章:

sql - 如何在 SQL 选择查询中展开一个 int 对列表

python - SQLAlchemy 查询返回 None

ruby - 使用 ruby​​ on rails 在服务器中调用数据库函数

mysql - react 正在将数据发布到控制台,但数据未成功使其成为 mysql 数据库

javascript - Sequelize 查询 nodejs

sql - 创建仅具有表 A 属性子集的表 B

node.js - Node/Express & Postgresql - 当没有行匹配时

node.js - 带有偏移量和限制的嵌套包含 Sequelize

使用 Sequelize 列中分组数据的平均值

postgresql - sequelize(v 4.3.0) 中的关联与自定义主键