3

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

我的问题是,使用触发器或附加 php 脚本(触发 SQL 查询)来处理所需的相关更改更有效?

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

请在性能以及可用性/未来修改等的基础上提出建议。

4

4 回答 4

4

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

它被称为解耦。

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

它还使人们能够使用其他机制来利用数据库。甚至是原始命令行。

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

于 2012-09-07T10:18:42.227 回答
3
  • 如果您希望 DBA 控制代码,则触发。
  • PHP 如果您希望您的程序员控制代码。

澄清:

如果它是一个触发器,那么这意味着它是数据库设计的一部分,可以让事情以这种方式工作。即数据库的结构取决于它以这种方式工作。

如果是 PHP 代码,则暗示该操作是您的业务逻辑的一部分,对数据库的核心结构并不重要。

于 2012-09-07T10:18:08.483 回答
1

事实上,数据库触发器会比 PHP 代码更快。这取决于在更新其他数据之前您需要从源表中“翻译”多少数据。操作它的次数越多,SQL 的可读性和可维护性就越差。因为它也可能包含商业逻辑。

所以,恕我直言,如果您没有性能问题,最好将其保留在 PHP 中。

于 2012-09-07T10:19:10.160 回答
-1

你可以使用下面的语法在 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
于 2016-06-21T06:24:30.570 回答