在MySql中创建事件表触发器
当我们在主表中进行更新和删除时,我想为事件表创建一个触发器。我有两个表,一个是主表,另一个是事件表。如果主表中有任何更改,如更新和删除插入到事件表中的旧记录在MySql中创建事件表触发器,mysql,Mysql,当我们在主表中进行更新和删除时,我想为事件表创建一个触发器。我有两个表,一个是主表,另一个是事件表。如果主表中有任何更改,如更新和删除插入到事件表中的旧记录 fld_id fld_name fld_date fld_logid 1 vino 12/4/2014 4 2 arun 12/4/2014 4 fld_id p_table_id fld_name fld_date fld_logid 1
fld_id fld_name fld_date fld_logid
1 vino 12/4/2014 4
2 arun 12/4/2014 4
fld_id p_table_id fld_name fld_date fld_logid
1 1 vino 12/4/2014 4
2 1 vino 12/4/2014 4
3 1 vino 12/4/2014 4
4 1 vino 12/4/2014 4
5 2 arun 12/4/2014 4
6 2 arun 12/4/2014 4
如果主表中有任何更改,如更新和删除插入到事件表中的旧记录
fld_id fld_name fld_date fld_logid
1 vino 12/4/2014 4
2 arun 12/4/2014 4
fld_id p_table_id fld_name fld_date fld_logid
1 1 vino 12/4/2014 4
2 1 vino 12/4/2014 4
3 1 vino 12/4/2014 4
4 1 vino 12/4/2014 4
5 2 arun 12/4/2014 4
6 2 arun 12/4/2014 4
您可以在主_表上定义删除后触发器来记录删除操作。
并在主_表上定义更新后触发器以记录更新操作
我不确定您的确切要求,但如果这是为了记录这些操作,那么最好在event_表中有一个operation_类型和datetime字段来记录事件类型和发生时间
如果表中未定义此类字段,可以按如下所示添加:
alter table event_table
add column event_type enum( 'delete', 'update' ) not null default 2
, add column event_time datetime default current_timestamp
假设有这样一个字段,我建议使用以下触发器。
如果不需要该字段,则可以注释掉该字段
示例1:删除后:
示例2:更新后:
drop trigger if exists au_on_primary_table;
delimiter //
create trigger au_on_primary_table
after update
on primary_table
for each row
begin
insert
into event_table ( p_table_id, fld_name, fld_date, fld_logid
, event_type, event_time
)
values ( OLD.fld_id, OLD.fld_name, OLD.fld_date, OLD.fld_logid
, 'update', current_timestamp -- 'update' is @ index 2 in enum
-- or use the following
-- , 2, current_timestamp -- 2 is index of 'update' in enum
);
end;
//