触发器或PHP脚本?

时间:2012-09-07 10:13:51

标签: php mysql triggers

所以,我正在开发一个PHP + MySQL系统,它有大约4个相关的表。一个表中的任何形式的插入,更新和删除通常反映至少两个表。

我的问题是,什么更有效,使用触发器或额外的PHP脚本(触发SQL查询)来处理所需的相关更改?

触发对我来说似乎很理想,但是当我写它们时,从可读性的角度来看,它们变得相当复杂和混乱。 PHP允许更“理智”的做事方式。

请根据性能以及可用性/未来修改等建议。

4 个答案:

答案 0 :(得分:4)

我强烈建议您构建数据库以照顾自己。

它被称为解耦。

然后,即使您的(或其他人)脚本中的数据受到保护也是错误的。对于大多数(全部?)业务而言,这是最重要的资产。

此外,它还可以使用其他机制来利用数据库。甚至是原始命令行。

使代码更具可读性 - 格式化并使用注释。

答案 1 :(得分:3)

  • 如果您希望DBA控制代码,则触发。
  • PHP,如果您希望程序员能够控制代码。

澄清:

如果它是一个触发器,那么暗示它是数据库设计的一部分,以便以这种方式工作。即数据库的结构取决于它以这种方式工作。

如果是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