Sequelize – 级联删除3个表
我试图级联删除数据通过3关联的表中sequelize。
我创build的模型如下。
用户型号:
var Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { var Users = sequelize.define('Users', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, name: { type: DataTypes.STRING, allowNull: false }, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updatedAt: DataTypes.DATE }, { classMethods: { associate: function(models) { Users.belongsToMany(models.Books, { through: { model: models.History }, foreignKey: 'userId', onDelete: 'cascade' }); } } }); return Users; };
书籍型号:
var Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { var Books = sequelize.define('Books', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, name: { type: DataTypes.STRING, allowNull: false }, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updatedAt: DataTypes.DATE }, { classMethods: { associate: function(models) { Books.belongsToMany(models.Users, { through: { model: models.History }, foreignKey: 'bookId', onDelete: 'cascade' }); } } }); return Books; };
历史模式:
var Sequelize = require('sequelize'); module.exports = function(sequelize, DataTypes) { var History = sequelize.define('History', { id: { type: Sequelize.INTEGER, allowNull: false, primaryKey: true, autoIncrement: true }, userId: { type: DataTypes.INTEGER, allowNull: false }, bookId: { type: DataTypes.INTEGER, allowNull: false }, from: { type: DataTypes.DATE, allowNull: false }, to: { type: DataTypes.DATE, allowNull: false }, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updatedAt: DataTypes.DATE }); return History; };
当我尝试级联删除用户对象和关于该用户的所有数据从历史logging表我有以下错误:
更新或删除表“Users”违反了表“History”上的外键约束“History_userId_fkey”
当我尝试从书中做同样的事情时,我有以下错误:
更新或删除表“Users”违反了表“History”上的外键约束“History_bookId_fkey”
如果我不想有这个错误,我首先从历史中删除行,然后我可以删除有关用户/书籍的行。
如何解决这个问题?
提前致谢。