摇光在望

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、利用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 ;

触发器只适用监听一个表的状态变化,当需要监听多个表的状态变化,这里不适用。

 

posted on 2021-04-27 11:45  摇光在望  阅读(213)  评论(0)    收藏  举报