表格的触发器是否可以应用于同一表格中的跟踪?
那是因为我有桌子说“员工”现在可以创建一个触发器,以便跟踪同一“员工”表中的变化
触发器,如
create trigger "<triggers_name>" before insert on employee
For each row
Begin
insert into employee field = timestamp;
end
答案 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()。
我想知道你是否可以对刚插入的表进行更新?我理解第二个插入的递归,但也许你可以更新同一个表?