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

时间:2010-04-07 12:09:50

标签: php mysql triggers

表格的触发器是否可以应用于同一表格中的跟踪?

那是因为我有桌子说“员工”现在可以创建一个触发器,以便跟踪同一“员工”表中的变化

触发器,如

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

2 个答案:

答案 0 :(得分:1)

简而言之,没有。

让我们考虑一下。

在执行操作之前执行“before”触发器(在这种情况下,执行“插入”操作)。

如果 这是有效的,并且每次在employee表上进行插入时,您都尝试插入employee表,那么您将永远循环在一个很大的递归混乱中。

引自MySQL文档

  

“在存储的函数或触发器中,   不允许修改表   已经被使用了(for   阅读或写作)   调用函数或触发器。“

有关详细信息,请参阅this page


也就是说,如果你需要在插入时进行跟踪,我建议使用第二个表,它肯定可以通过触发器引用。您并在employee表中创建一个FK,并将您的timestamp列放在该新表中,并执行以下操作:

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

答案 1 :(得分:0)

如果您只想跟踪插入时间,可以将日期字段默认为NOW()。

我想知道你是否可以对刚插入的表进行更新?我理解第二个插入的递归,但也许你可以更新同一个表?