sequelize级联删除

发布于 2022-09-06 11:48:07 字数 496 浏览 10 评论 0

环境

node.js+sequelize+mysql

业务背景

mysql数据库中,有两个表已经建立了外键关系.
这个时候我想删除主表上的数据
但是sequelize提供的destroy方法不行

表结构

  • 班主任表:master(id,name)
  • 学生表:student(id,master_id,name)

问题

通过Teacher.destroy({where: {id: 2})删除的时候,会报错.因为受到外键约束..没办法删除

sequelize有内置的级联删除么?
或者用 query方法,怎么写sql代码呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

匿名的好友 2022-09-13 11:48:07

我使用的方式 获取实例和关联的实例执行删除

也许是这样
teacher = Teacher.findById(2)
students = teacher.getStudents()
for (let student of students) { student.destory() }
teacher.destory()

这是有效的。刚刚学习。也许还有更好的方式 :)

凉城凉梦凉人心 2022-09-13 11:48:07
sequelize.define(name, { attributes }, {
  hooks: {
    beforeDestroy: function () {
      //在这里能做你爱做的事情
    },
    beforeValidate: [
      function () {},
      function() {} // Or an array of several
    ]
  }
})

还有,看到belongsTo 的参数有:

  • options.hooks,
  • options.as,
  • options.foreignKey,
  • options.targetKey,
  • options.onDelete:看一下这个能不能帮到你
  • options.onUpdate,
  • options.constraints:看一下这个能不能帮到你
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文