php - 表的触发器可以应用于同一个表中的跟踪吗?

标签 php mysql triggers

表的触发器可以应用于同一个表中的跟踪吗?

也就是说,如果我有表说“employee”,现在我可以创建一个触发器,以便它跟踪同一“employee”表中的更改

触发例如

create trigger "<triggers_name>"  before insert on employee
For each row
Begin
 insert into employee field = timestamp;
end

最佳答案

简而言之,不。

所以让我们考虑一下。

“之前”触发器将在操作(在本例中为“插入”操作)发生之前执行。

如果这可行,并且每次在员工表上发生插入时您都尝试向员工表中进行插入,那么您将永远循环陷入一个巨大的递归困惑中。

引用MySQL文档

"Within a stored function or trigger, it is not permitted to modify a table that is already being used (for reading or writing) by the statement that invoked the function or trigger."

参见this page了解更多信息。

<小时/>

也就是说,如果您需要在插入发生时进行跟踪,我建议使用第二个表,它当然可以通过触发器引用。您为员工表创建一个 FK,并将时间戳列放入该新表中,然后执行如下操作:

for each row
insert into employee_tracking (id, timestamp) on duplicate key update set timestamp = new_timestamp;

关于php - 表的触发器可以应用于同一个表中的跟踪吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592265/

相关文章:

mysql - 无法通过socket '/var/lib/mysql/mysql.sock'连接到本地MySQL服务器(2)

plsql - 插入更新触发器 PL/SQL 之后

c# - 如何使用触发器在 Setter Value 属性上绑定(bind)另一个控件?

php - 如何修复 wp-config.php 以在 WordPress 中上传图片?

php - 我如何构建 db_select, ->condition 将字段与 drupal 中的值与 php 进行比较

php - 从阿拉伯语 UTF8 + 英语字符串中去除非字母数字字符

Mysql添加索引导致超时

php - 使用 PHP (Code Igniter) 和 MongoDB 构建用户系统

mysql - 如何插入触发器

php - 带/不带表特定引用的 MySQL 查询