所以,我正在用 PHP + MySQL 开发一个系统,它有大约 4 个相关的表。一个表中的任何形式的插入、更新和删除通常至少反映在 2 个表中。
我的问题是,使用触发器或附加 php 脚本(触发 SQL 查询)来处理所需的相关更改更有效?
触发器对我来说似乎很理想,但是当我编写它们时,从可读性的角度来看它们变得非常复杂和混乱。PHP 允许以更“理智”的方式做事。
请在性能以及可用性/未来修改等的基础上提出建议。
我强烈建议您构建数据库来照顾自己。
它被称为解耦。
然后,即使您(或其他人)脚本中存在错误,数据也受到保护。对于大多数(全部?)企业来说,这是最重要的资产。
它还使人们能够使用其他机制来利用数据库。甚至是原始命令行。
为了使代码更具可读性 - 格式化并使用注释。
澄清:
如果它是一个触发器,那么这意味着它是数据库设计的一部分,可以让事情以这种方式工作。即数据库的结构取决于它以这种方式工作。
如果是 PHP 代码,则暗示该操作是您的业务逻辑的一部分,对数据库的核心结构并不重要。
事实上,数据库触发器会比 PHP 代码更快。这取决于在更新其他数据之前您需要从源表中“翻译”多少数据。操作它的次数越多,SQL 的可读性和可维护性就越差。因为它也可能包含商业逻辑。
所以,恕我直言,如果您没有性能问题,最好将其保留在 PHP 中。
你可以使用下面的语法在 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