MySQL触发了赞成和反对意见;欺骗

MySQL触发了赞成和反对意见;欺骗,mysql,triggers,Mysql,Triggers,简而言之,在MySQL中使用触发器的优缺点是什么?然而,我从来没有在MySQL中使用过触发器和存储过程,所以我习惯于用PHP处理业务逻辑,用SQL处理CRUD。 现在我有一个任务来保存表的历史记录,并考虑为此目的使用触发器。因此,子问题是:触发器是否适合此特定任务?简言之:(触发器与在代码中实现功能(例如php)的优缺点) 优点:更容易实施审计/历史记录 缺点:更难调试的问题简而言之:(触发器与在代码中实现功能(如php)的优缺点) 优点:更容易实施审计/历史记录 缺点:调试问题比较难这就是我不

简而言之,在MySQL中使用触发器的优缺点是什么?然而,我从来没有在MySQL中使用过触发器和存储过程,所以我习惯于用PHP处理业务逻辑,用SQL处理CRUD。 现在我有一个任务来保存表的历史记录,并考虑为此目的使用触发器。因此,子问题是:触发器是否适合此特定任务?

简言之:(触发器与在代码中实现功能(例如php)的优缺点)

优点:更容易实施审计/历史记录

缺点:更难调试的问题

简而言之:(触发器与在代码中实现功能(如php)的优缺点)

优点:更容易实施审计/历史记录


缺点:调试问题比较难

这就是我不使用存储过程的原因-我尝试过这样做,但这不是一个非常愉快的过程。如果我需要修改代码,我必须删除该过程并重新编译(我想有更好的方法)。而且很难调试(有没有比编写代码、编译更好的方法,如果它不起作用,请修复它并重新编译?)。没有改变触发器,是吗?为什么MySQL在业务逻辑方面如此糟糕?(这是一个反问:)@Nemoden-我通常不会在存储过程中放入任何业务逻辑,我只使用它们来访问数据或插入/更新数据。我把所有的业务逻辑都保存在代码中,我也是,这就是我犹豫的原因。尽管如此,mysql触发器似乎是最适合我执行任务的地方。明确地说:如果我们使用公共接口保存对数据库的更改(ORM/AR),那么我不会这样做,因此可以修改表记录的代码将分布在代码库中。这实际上是真正的问题,在最近的将来是无法解决的。这就是我不使用存储过程的原因——我试图进入这个过程,但这不是一个非常愉快的过程。如果我需要修改代码,我必须删除该过程并重新编译(我想有更好的方法)。而且很难调试(有没有比编写代码、编译更好的方法,如果它不起作用,请修复它并重新编译?)。没有改变触发器,是吗?为什么MySQL在业务逻辑方面如此糟糕?(这是一个反问:)@Nemoden-我通常不会在存储过程中放入任何业务逻辑,我只使用它们来访问数据或插入/更新数据。我把所有的业务逻辑都保存在代码中,我也是,这就是我犹豫的原因。尽管如此,mysql触发器似乎是最适合我执行任务的地方。明确地说:如果我们使用公共接口保存对数据库的更改(ORM/AR),那么我不会这样做,因此可以修改表记录的代码将分布在代码库中。这才是真正的问题,在最近的将来是无法解决的。您是否考虑过使用数据库日志文件来对数据库中的更改进行协议更改?没有。与触发器或php for business logic相比,如何更简单地实现我需要的功能?您是否考虑过使用数据库日志文件来更改数据库中的协议?没有。与触发器或php for business logic相比,如何更简单地实现我需要的功能?