【发布时间】:2017-04-02 00:38:05
【问题描述】:
是否可以使用 php 监听数据库 (mysql) 中发生的任何更新? 例如。 如果您在数据库中进行任何更新(更改条目或元素),它将通知您或执行特定功能。
【问题讨论】:
-
欢迎来到 Stack Overflow!为了给您一个很好的答案,如果您还没有看过How to Ask,它可能会对我们有所帮助。如果您可以提供minimal reproducible example,它可能也很有用。
是否可以使用 php 监听数据库 (mysql) 中发生的任何更新? 例如。 如果您在数据库中进行任何更新(更改条目或元素),它将通知您或执行特定功能。
【问题讨论】:
直接使用SQL triggers 会更容易。除此之外,PHP 还拥有自己的classes in the SPL,用于事件驱动功能。
使用 SQL 触发示例(取自上面链接中的示例)
mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account
-> FOR EACH ROW SET @sum = @sum + NEW.amount;
mysql> SET @sum = 0;
mysql> INSERT INTO account VALUES(137,14.98),(141,1937.50),(97,-100.00);
mysql> SELECT @sum AS 'Total amount inserted';
此示例创建一个名为 ins_sum 的触发器,该触发器在执行插入语句后计算插入值的总和。在插入语句之后,您可以通过简单的 select 语句选择 @sum 变量。
【讨论】: