gpt4 book ai didi

mysql - 在MySql中创建事件表触发器

转载 作者:行者123 更新时间:2023-11-30 00:23:57 25 4
gpt4 key购买 nike

我想在主表中进行更新和删除时为事件表创建一个触发器。我有两个表,一个是主表,另一个是事件表。如果主表中有任何更改,例如(更新和删除)旧记录插入到事件表中。

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

最佳答案

If any change in primary table like (update and delete) the old record inserted into event table.

您可以在primary_table上定义after delete触发器来记录删除操作。
并在primary_table上定义一个after update触发器来记录update操作。

我不确定您的确切要求,但如果这是为了记录这些操作,那么最好在event_table记录事件类型和发生时间。

如果表中没有定义此类字段,您可以按如下所示添加:

alter table event_table 
add column event_type enum( 'delete', 'update' ) not null default 2
, add column event_time datetime default current_timestamp

假设有这样的字段,我建议遵循trigger
如果不需要该字段,您可以注释掉该字段。

示例 1: 删除后:

drop trigger if exists ad_on_primary_table;

delimiter //

create trigger ad_on_primary_table
after delete
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
, 'delete', current_timestamp -- 'delete' is @ index 1 in enum
-- or use the following
-- , 1, current_timestamp -- 1 is index of 'delete' in enum
);
end;
//

示例 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;
//

关于mysql - 在MySql中创建事件表触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23026144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com