一、利用MySQL存储过程来更新各个板块数据的最新分区时间,传给前端做时间调用
1.1 新建表
create table `heavy_conf_date_display` (
`module_code` varchar(256) default null comment '模块代码',
`module_name` varchar(512) default null comment '模块名称',
`module_type` varchar(32) default null comment '模块类型,d-日,W-周,M-月',
`show_date` varchar(128) default null comment '最新日期',
`memo` varchar(1024) default null comment '图表名称',
key `heavy_conf_date_display_idx01` (`module_type`,`module_code`) using btree
) engine=innodb default charset=utf8 comment='展示日期配置表';
1.2 创建带参数的存储过程
create
procedure kyjk.p_heavy_conf_date_display(in p_module_code varchar(256))
begin
declare v_date varchar(256);
declare v_tab varchar(256);
-- 业务一日最新分区--
if p_module_code='JYP22000000' then
set v_tab = 'bie_f_heavy_level_display_01_table';
select max(replace(income_dt,'-','')) into v_date from bie_f_heavy_level_display_01_table;
update heavy_conf_date_display set show_date=v_date where module_code='JYP22000000' and module_type = 'd'; -- 更新对应板块的最新时间
end if;
-- 业务二日最新分区--
if p_module_code='JYP22000001' then
set v_tab='ads_fin_bidding_regul_sum_di';
select max(inc_day) into v_date from ads_fin_bidding_regul_sum_di;
update heavy_conf_date_display set show_date=v_date where module_code='JYP22000001' and module_type = 'd';
end if;
end;
1.3 创建事件来定时调用存储过程
create event if not exists kyjk.e_test
on schedule every 1 second
on completion preserve
do call p_heavy_conf_date_display('JYP22000000'); --调带参数的存储过程
2.1创建不带参数的存储过程
create
procedure kyjk.p_heavy_conf_date_display02()
begin
declare v_date varchar(256);
declare v_tab varchar(256);
-- 业务一--
set v_tab = 'bie_f_heavy_level_display_01_table';
select max(replace(income_dt,'-','')) into v_date from bie_f_heavy_level_display_01_table;
update heavy_conf_date_display set show_date=v_date where module_code='JYP22000000' and module_type = 'd';
-- 业务二--
set v_tab = 'ads_fin_bidding_regul_sum_di';
select max(inc_day) into v_date from ads_fin_bidding_regul_sum_di;
update heavy_conf_date_display set show_date=v_date where module_code='JYP22000001' and module_type = 'd';
end;
2.2 创建事件来定时调用存储过程
create event if not exists kyjk.e_test01
on schedule every 1 second
on completion preserve
do call p_heavy_conf_date_display02(); --这样可以不用传参,统一更新各个板块的最新分区时间;
二、创建触发器,通过一个表信息发生变化后,触发更新另外一个表
delimiter $
create trigger p_heavy_conf_date_display01 after update on bie_f_heavy_level_display_01_table for each row
begin
declare v_date varchar(40)character set utf8;
select max(inc_day) into v_date from bie_f_heavy_level_display_01_table;
update heavy_conf_date_display set show_date=v_date where module_code='JYP22000001' and module_type = 'd';
end $
delimiter ;
触发器只适用监听一个表的状态变化,当需要监听多个表的状态变化,这里不适用。
浙公网安备 33010602011771号