我目前正试图使两个表创建两个具有1:M关联的表。我要实现的目标是:
Parent deleted? -> Set foreign key in Child to null
Child deleted? -> Delete parent
我已经尝试了很长时间,但不确定是否确实可行。这些是我的创建表查询(由sequelize(一个SQL node.js模块)生成)
父表:
CREATE TABLE IF NOT EXISTS `Sets` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `appId` INTEGER NOT NULL, `cardAmount` INTEGER NOT NULL, `foil` TINYINT(1) NOT NULL, `reserved` TINYINT(1) NOT NULL);
子表:
CREATE TABLE IF NOT EXISTS `Cards` (`assetId` INTEGER PRIMARY KEY, `appId` INTEGER NOT NULL, `foil` TINYINT(1) NOT NULL, `reserved` TINYINT(1) NOT NULL, `name` VARCHAR(255) NOT NULL, `setId` INTEGER REFERENCES `Sets` (`id`) ON DELETE SET NULL ON UPDATE CASCADE);
我不太确定要对它们进行什么更改以使其像我想要的那样工作,因为父表没有外键,所以我认为不可以添加ON DELETE。感谢帮助!
编辑:我使用的方言是SQLite
答案 0 :(得分:0)
我们可以在关联过程中添加ON DELETE
选项。
Parent.hasOne(models.Child, {
onDelete: 'set null'
});
这将在子模型中将foreignKey
设置为null。但是要在删除子级后删除父级,请尝试使用子级模型中的钩子beforeDestroy
或afterDestroy
删除父级。