所以,我正在开发一个PHP + MySQL系统,它有大约4个相关的表。一个表中的任何形式的插入,更新和删除通常反映至少两个表。
我的问题是,什么更有效,使用触发器或额外的PHP脚本(触发SQL查询)来处理所需的相关更改?
触发对我来说似乎很理想,但是当我写它们时,从可读性的角度来看,它们变得相当复杂和混乱。 PHP允许更“理智”的做事方式。
请根据性能以及可用性/未来修改等建议。
答案 0 :(得分:4)
我强烈建议您构建数据库以照顾自己。
它被称为解耦。
然后,即使您的(或其他人)脚本中的数据受到保护也是错误的。对于大多数(全部?)业务而言,这是最重要的资产。
此外,它还可以使用其他机制来利用数据库。甚至是原始命令行。
使代码更具可读性 - 格式化并使用注释。
答案 1 :(得分:3)
澄清:
如果它是一个触发器,那么暗示它是数据库设计的一部分,以便以这种方式工作。即数据库的结构取决于它以这种方式工作。
如果是PHP代码,则意味着该操作是业务逻辑的一部分,对数据库的核心结构并不重要。
答案 2 :(得分:1)
事实上,数据库触发器比PHP代码更快。这取决于在更新其他数据之前需要从源表“翻译”多少数据。您必须操作它越多,SQL可能的可读性和可维护性就越低。因为它也可能包含商业逻辑。
所以,恕我直言,如果你没有性能问题,你最好把它保存在PHP中。
答案 3 :(得分:0)
Yo可以使用下面的语法...
在MYSQL中添加触发器CREATE
[DEFINER = { user | CURRENT_USER }]
TRIGGER trigger_name
trigger_time trigger_event
ON tbl_name FOR EACH ROW
[trigger_order]
trigger_body
trigger_time: { BEFORE | AFTER }
trigger_event: { INSERT | UPDATE | DELETE }
trigger_order: { FOLLOWS | PRECEDES } other_trigger_name