MySQL:更新子级时更新父级记录(带有Sequelize的节点)

时间:2017-02-24 17:19:45

标签: mysql node.js sequelize.js

我有以下表格:

Groups Members

Groups - > MembersGroupsMembers有很多关系。

更新Groups记录之一时,更新updatedAt Members列的最佳做法是什么?我使用Sequlize ORM。

目前,我正在更新Members记录,然后提取属于该Groups表的Members记录,并使用当前日期更新updatedAt列。我觉得有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

Sequelize不提供“触发器”的本机定义,因为它们的实现因目标数据库而异。但是,您可以使用两种方法来执行此操作:

  1. 如果您不介意特定于数据库的代码,您可以轻松使用原始SQL查询(甚至通过Sequelize)发出ALTER TABLE命令来执行此触发更新。

  2. 您可以使用Sequelize Hooks(例如afterUpdate)在Sequelize本身,跨平台中执行此操作。有关详细信息,请参阅Hooks Documentation

  3. 就我个人而言,我更喜欢Hooks,但有一点需要注意:只要您使用Sequelize进行所有更新工作,它们才能正常工作。它们不会被转换为数据库触发器,因此如果您手动更新数据库(例如使用管理工具),则不会执行更新。