Django代码或MySQL触发器

Jd0*_*007 4 mysql django triggers

我正在使用Django创建一个使用MySQL数据库的Web服务.客户端通过URL与我们的数据库连接,由Django处理.现在我正在尝试创建一种行为,只要某个表被修改,它就会自动执行一些检查/记录,这自然意味着MySQL触发器.但是我也可以在Django中,在执行表修改的请求处理程序中执行此操作.我不认为Django还有触发支持,所以我不确定哪个更好,通过Django代码或MySQL触发器.

任何对这些选项的性能有所了解的人都要关注一些问题吗?提前致谢!

Cra*_*der 8

有很多方法可以解决您所描述的问题:

  • 应用逻辑
    • 特定于视图的逻辑 - 如果行为特定于单个视图,则将更改放在视图中.
    • 特定于模型的逻辑 - 如果行为特定于单个模型,则覆盖模型的save()方法.
  • 中间件逻辑 - 如果行为与多个模型相关或需要围绕现有应用程序,您可以使用Django的预保存/后保存信号来添加其他行为,而无需更改应用程序本身.
  • 数据库存储过程 - 通常是一种可能性,但Django的ORM不使用它们.不可跨数据库移植.
  • 数据库触发器 - 不能从一个数据库移植到另一个数据库(甚至是下一个数据库的一个版本),但允许您跨多个(可能是非Django)应用程序控制共享行为.

就个人而言,我更喜欢使用覆盖save()方法或使用Django信号.使用特定于视图的逻辑可以捕获具有相同模型的多个视图的大型应用程序.