首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django代码或MySQL触发器

Django代码或MySQL触发器
EN

Stack Overflow用户
提问于 2010-10-31 00:27:57
回答 2查看 4.6K关注 0票数 4

我正在使用Django创建一个使用MySQL数据库的web服务。客户端通过URL与我们的数据库进行接口,由Django处理。现在,我正在尝试创建一种行为,每当某个表被修改时都会自动执行一些检查/日志记录,这自然意味着MySQL触发器。但是,我也可以在Django中,在执行表修改的请求处理程序中这样做。我认为Django还没有触发器支持,所以我不确定通过Django代码或MySQL触发器执行哪个更好。

有谁知道这些选项的表现,想弄清楚吗?提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2010-10-31 01:13:18

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

  • 应用逻辑
    • 视图--特定于逻辑的--如果行为特定于单个视图,那么将更改放在视图中。
    • 模型--特定于逻辑的--如果行为特定于单个模型,那么模型的重写save()方法

  • 中间件逻辑 --如果行为涉及多个模型或需要包装在现有应用程序周围,则可以使用Django的预保存/保存后信号添加附加行为,而无需更改应用程序本身。
  • 数据库存储过程 --通常是一种可能性,但是Django的ORM不使用它们。不能跨数据库移植。
  • 数据库触发 --不是从一个数据库移植到另一个数据库(甚至是数据库的一个版本到下一个数据库),而是允许您控制多个(可能不是Django)应用程序之间的共享行为。

就我个人而言,我更喜欢使用重写save()方法或使用Django信号。使用特定于视图的逻辑可以帮助您了解具有相同模型的多个视图的大型应用程序。

票数 8
EN

Stack Overflow用户

发布于 2010-10-31 00:41:14

在我看来,您所描述的内容听起来像是“更改数据捕获”。

我认为这种权衡可能会是这样的:

  1. Django的优点:中间层代码可以由多个应用程序共享;可移植的如果数据库更改
  2. Django缺点:逻辑上不是业务事务的一部分
  3. MySQL的优点:在数据库中很自然地这样做
  4. MySQL缺点:触发器非常特定于数据库;如果更改供应商,则必须重写。

可能会有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4061304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档