mysql定时器,触发器,

 
 
 
 
-----------------将查询结果赋值给变量--------------
--  方式 1
DECLARE cnt INT DEFAULT 0;
select count(*) into cnt from test_tbl;
select cnt;

--  方式 2
set @cnt = (select count(*) from test_tbl);
select @cnt;


--  方式 3
select count(*) into @cnt1 from test_tbl;
select @cnt1;

--  多个列的情况下似乎只能用 into 方式
select max(status), avg(status) into @max, @avg from test_tbl;
select @max, @avg;

--mysql触发器--

delimiter ||      //mysql 默认结束符号是分号,当你在写触发器或者存储过程时有分号出现,会中止转而执行
drop trigger if exists updatename||    //删除同名的触发器,
create trigger updatename after update on user for each row   //建立触发器,
                                                   begin
//old,new都是代表当前操作的记录行,你把它当成表名,也行;
if new.name!=old.name then   //当表中用户名称发生变化时,执行
update comment set comment.name=new.name where comment.u_id=old.id;
end if;
end||
delimiter ;


-----------------可用--------------
delimiter ||
drop trigger if exists im_num after||
create trigger im_num after insert on im_person_chatlog for each row
begin
set @count=(select curdate());
update statisticsnum set Im=Im+1 where statisticsnum.UserId=new.fromid and statisticsnum.CreateTime=@count ;
end||
delimiter ;

-- ----------------------------
-- im私聊聊天触发器 监听聊天记录表,每增加一条记录,im频次加一
-- ----------------------------


delimiter ||
drop trigger if exists im_num_person||
create trigger im_num_person after insert on im_person_chatlog for each row
begin
set @count=(select curdate());
update statisticsnum set Im=Im+1 where statisticsnum.UserId=new.fromid and statisticsnum.CreateTime=@count ;
end||
delimiter ;

-- ----------------------------
-- im群聊聊天触发器
-- ----------------------------

delimiter ||
drop trigger if exists im_num_group||
create trigger im_num_group after insert on im_group_chatlog for each row
begin
set @count=(select curdate());
update statisticsnum set Im=Im+1 where statisticsnum.UserId=new.fromid and statisticsnum.CreateTime=@count ;
end||
delimiter ;


-- ----------------------------
-- im讨论组聊天触发器
-- ----------------------------
delimiter ||
drop trigger if exists im_num_discuss||
create trigger im_num_discuss after insert on im_discuss_chatlog for each row
begin
set @count=(select curdate());
update statisticsnum set Im=Im+1 where statisticsnum.UserId=new.fromid and statisticsnum.CreateTime=@count ;
end||
delimiter ;



-----mysql定时任务----
set time_zone = '+8:00';
set GLOBAL event_scheduler = 1;

# 设置该事件使用或所属的数据库base数据库
use test;
# 如果原来存在该名字的任务计划则先删除
drop event if exists upload_to_sdmp;
# 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ';' ,这样在后续的 create 到 end 这段代码都会看成是一条语句来执行
DELIMITER $$
# 创建计划任务,设置第一次执行时间为'2014-07-30 10:00:00',并且每天执行一次
create event upload_to_sdmp
on schedule every 1 day starts timestamp '2014-07-30 10:00:00'
#on schedule every 1 SECOND
do
# 开始该计划任务要做的事
begin
-- do something 编写你的计划任务要做的事
INSERT aaa VALUES (3,'222');
INSERT aaa VALUES (2,'222');

-- 结束计划任务
end $$

# 将语句分割符设置回 ';'
DELIMITER ;




set GLOBAL event_scheduler = 1;
use yisou;
drop event if exists upload_to_sdmp;
DELIMITER $$
create event upload_to_sdmp
on schedule every 1 day starts timestamp '2014-07-30 10:00:00'
#on schedule every 1 SECOND
do
begin
#当前日期
set @date=(select curdate());
#获取凌晨的时间戳
set @start=select unix_timestamp(curdate());
#当天结束时间戳
set @stop=@start+86400;
set @day_person_num = (select count(*) from im_person_chatlog where timeline > @start and timeline < @stop);
update ceshi set num= @day_person_num;
end $$
DELIMITER ;



====设置====
set GLOBAL event_scheduler = 1;
use yisou;
drop event if exists upload_to_sdmp;
DELIMITER $$
create event upload_to_sdmp
on schedule every 1 day starts timestamp '2014-07-30 10:00:00'
do
begin
DECLARE start,stop,day_person_num INT DEFAULT 0;
select unix_timestamp(curdate()) into start;
select unix_timestamp(start + 86400) into stop;
select count(*) into day_person_num from im_person_chatlog where timeline > start and timeline < stop;
update ceshi set num= day_person_num;
end $$
DELIMITER ;




set GLOBAL event_scheduler = 1;
use yisou;
drop event if exists upload_to_im;
DELIMITER $$
create event upload_to_im
#5秒后执行
on schedule every 5 SECOND
do
begin
set @count=(select curdate());
set @start=unix_timestamp(@count);
set @end=@start+86400;
set @day_person_num=(select count(*) from im_person_chatlog  where timeline > @start and timeline < @end);
set @im_group_chatlog=(select count(*) from im_group_chatlog  where timeline > @start and timeline < @end);
set @im_discuss_chatlog=(select count(*) from im_discuss_chatlog  where timeline > @start and timeline < @end);
set @total=@day_person_num+@im_group_chatlog+@im_discuss_chatlog;
update statisticsnum set Im= @total where Create_time=@count;
end $$
DELIMITER ;



set GLOBAL event_scheduler = 1;
use MarketPlace;
drop event if exists upload_to_homedate;
DELIMITER $$
create event upload_to_homedate
#每天定时执行秒后执行
ON SCHEDULE EVERY 1 DAY STARTS '2018-04-13 00:00:00'
do
begin
set @RandNum=(SELECT FLOOR(0 + (RAND() * 10)));
set @NewUser=((@RandNum * 109));
set @NweCode=((@RandNum * 19));
set @YtbNum=((@RandNum * 11));

update HomeDate set NewUser= @NewUser,NweCode=@NweCode,YtbNum=@YtbNum,AccessNun=1000 where id=1;
end $$
DELIMITER ;


set GLOBAL event_scheduler = 1;
use MarketPlace;
drop event if exists upload_to_homedate_day;
DELIMITER $$
create event upload_to_homedate_day
#5秒后执行
on schedule every 3600 SECOND
do
begin
set @RandNum=(SELECT FLOOR(0 + (RAND() * 10)));
set @TradingTotal=((@RandNum * 10));
set @UserTotal=((@RandNum * 5));
set @ActiveUser=((@RandNum * 5));
set @DealTotal=((@RandNum * 2));
set @AccessNun=((@RandNum * 50));
update HomeDate set TradingTotal=TradingTotal + @TradingTotal,UserTotal=UserTotal+@UserTotal,ActiveUser=ActiveUser+@ActiveUser,DealTotal=DealTotal+@DealTotal,AccessNun=AccessNun+@AccessNun where id=1;
end $$
DELIMITER ;





猜你喜欢

转载自blog.csdn.net/qq_26959879/article/details/79917604
今日推荐