mysql 函数、事件( 建立一个存储引擎为memory(已建好)的表,通过事件实现插入的每条数据30分钟后自动删除)

use db;
create table lg(
id int unsigned,
naem varchar(20),
t timestamp,
message varchar(100)
);
select *from lg;
drop table lg;
insert into lg(id,naem,t,message)value(1, 'zcx',now(),'message');
-- 建立存储过程查询数据
delimiter $
create procedure ins()
begin
select *from lg;
-- insert into lg value( id,naem,now(),message);
 end $
 delimiter;
 call ins();
 drop procedure ins2;
 -- 建立存储过程插入数据 in 输入,out输出
delimiter $
create procedure ins2(in id int,in naem varchar(20) ,in t timestamp,in m varchar(100))
begin
 insert into lg value(id,naem,t,m);
 end $
 delimiter;
call ins2(4,'zcx',now(),'你好2');

— 定义函数

use db;
delimiter $
create function pf(i int)
returns  int
begin
    declare t int default 3 ;
    return i*i*t;
 end $
delimiter;
select pf(3);

my.ini

解决导入脚本时funtion报错
log_bin_trust_function_creators=1

-- 13627389281 1362****281
delimiter $
create function f_m(t char(11))
returns char(11)
begin
 return insert(t,5,4,'****');
 end $
delimiter;
select f_m('15294939301');

一、函数

— 查询声明了那些函数

show function status where emp='f_m';

— 自定义函数

delimiter $
create function pf(i int)
returns int
begin
return i * i;
end$
delimiter ; 

— 调用函数

select pf(19), pf(2), pf(6);

— 删除定义的函数

drop function f_level; 

— 函数返回多长时间前的消息

delimiter $
create function f_addtime(t datetime)
returns varchar(100)
begin
declare t1 int;
declare t2 int;
declare m varchar(30);
set t1 = unix_timestamp();
set t2 = unix_timestamp(t);
if t1 - t2 < 60 then
set m = '&#x521A;&#x521A;';
elseif t1 - t2 < 3600 then
set m = concat(round((t1 - t2) / 60), '&#x5206;&#x949F;&#x524D;');
elseif t1-t2 < (3600*24) then
set m = concat(round((t1 - t2) / 3600), '&#x5C0F;&#x65F6;&#x524D;');
else
set m = from_unixtime(t2);
end if;
return m;
end $
delimiter ;

二、event事件

优点
一些数据定时操作不再依赖外部程序,而是直接使用数据库本身提供的函数。

[En]

Some data timed operations no longer rely on external programs, but directly use the functions provided by the database itself.

它每秒可以执行一项任务,这在一些对实时性要求很高的环境中非常实用。

[En]

It can execute one task per second, which is very practical in some environments with high real-time requirements.

缺点
定时触发,不可以调用。

— 事件 自动定时器 作业 mysql 5.1 新增
— 开启关闭事件调度器
— ON 1 开启事件功能
— OFF off 0 关闭事件功能

show variables like '%event_scheduler%'
set global event_scheduler = OFF
set global event_scheduler = on;
set @@global.event_scheduler = on;
set global event_scheduler = 1;
set @@global.event_scheduler = 1;
set global event_scheduler = on;
-- event_scheduler
show variables like '%schedule%';

— 查看数据库 d3中的所有事件对象,运行完的事件对象自动删除。

select EVENT_NAME from INFORMATION_SCHEMA.EVENTS
where EVENT_SCHEMA = 'd3'
order by EVENT_NAME;
create event e1
on schedule
at current_timestamp + interval 1 hour
do update myschema.mytable set mycol = mycol + 1;
delimiter //
create event e1 on schedule at current_timestamp + interval 5 second
do select now();
delimiter ;
create event e2 on schedule at '2021-09-14 15:08:00'
do select now();
drop table if exists tt;
create table tt(
id int unsigned auto_increment,
regtime datetime,
primary key(id)
)
select * from tt;

— 当前系统5秒后执行事件,事件执行就,删除此事件

create event e3 on schedule at current_timestamp + interval 5 second
do insert into tt value(null,now());

— 10秒后开始,每5秒执行一次 插入

create event e4 on schedule
every 5 second
starts current_timestamp + interval 10 second
do insert into tt value(null,now());

— 立即开始,每10 秒清空一下表 at starts ends

create event e5 on schedule
every 10 second ends '2021-09-14 15:22:00'
do truncate tt;
drop event e5;

— 查看所有事件

show events;

— 修改事件的名称

alter event ee1 rename to e01

— 删除事件

drop event if exists e01;

— 事件暂停禁用,但不删除

alter event e4 disable;

— 事件启用

alter event e4 enable;

一个练习题

表一:

create table t(
id char(36) primary key,
naem varchar(20),
dt datetime,
pwd varchar(20),
msg varchar(20)
);
select *from t;&#xA0;&#xA0;

插入数据:

insert t value(uuid(),'&#x5F20;&#x4E09;',now(),'123456','&#x591A;&#x597D;&#x591A;&#x597D;');
insert t value(uuid(),'&#x674E;&#x56DB;',now(),'123456','&#x76F8;&#x5173;');
insert t value(uuid(),'&#x738B;&#x4E94;',now(),'123456','&#x76F8;&#x5173;');
insert t value(uuid(),'&#x79CB;&#x6885;',now(),'123456','&#x4E09;&#x4E2A;');

表二:

create table tt(
id char(36) primary key,
naem varchar(20),
dt datetime,
pwd varchar(20),
msg varchar(20)
)engine=memory;

— 触发器 插入数据如果t表中有就插入tt表,没有就删除

delimiter $
create trigger stt before insert on tt for each row
begin
&#xA0; if new.naem not in(select naem from t) then
&#xA0; delete from tt where naem not in(select naem from t);
&#xA0; end if;
end $
delimiter;

— — 建立一个存储引擎为memory(已建好)的表,通过事件实现插入的每条数据30分钟后自动删除

答案一:

create event e2 on schedule every 5 second do delete from tt where now()>date_add(dt,interval 30 minute);

答案二:

-- &#x5148;&#x5EFA;&#x7ACB;&#x5B58;&#x50A8;&#x8FC7;&#x7A0B;
delimiter $
create procedure autod()
begin
delete from tt where now()>date_add(dt,interval 30 minute);
end $
delimiter;
-- &#x5728;&#x5EFA;&#x7ACB;&#x4E00;&#x4E2A;&#x4E8B;&#x4EF6;&#xFF0C;&#x6BCF;&#x4E94;&#x79D2;&#x68C0;&#x67E5;&#x4E00;&#x6B21;
create event e1 on schedule every 5 second  ends do call autod();

Original: https://www.cnblogs.com/zcxxcvbn/p/15937864.html
Author: 一份人间烟火
Title: mysql 函数、事件( 建立一个存储引擎为memory(已建好)的表,通过事件实现插入的每条数据30分钟后自动删除)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/507792/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 深入浅出的分析 Properties

    作者:炸鸡可乐原文出处:www.pzblog.cn 一、摘要 在集合系列的第一章,咱们了解到,Map 的实现类有 HashMap、LinkedHashMap、TreeMap、Ide…

    数据库 2023年6月14日
    072
  • Python第二十一天 fileinput模块

    Python第二十一天 fileinput模块 fileinput模块 fileinput.input([files[, inplace[, backup[, bufsize[, …

    数据库 2023年6月9日
    062
  • 「 MySQL高级篇 」MySQL索引原理,设计原则

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    数据库 2023年5月24日
    080
  • Shell 第二章《流控》

    前言 无论什么编程语言都离不开条件判断(流控)。SHELL也不例外。例如,用户输入的密码不够长时提示用户,你太短了例如,用户输入了备份的目录,如果有目录继续备份,如果没有目录创建目…

    数据库 2023年6月14日
    084
  • Test post from Metablog Api

    This is the body of the post posted on2011-02-06 17:25 迷你软件 阅读(328 ) 评论() 编辑 本网站绝大部分资源来源于I…

    数据库 2023年6月11日
    077
  • 20个数据库常见面试题讲解

    事务四大特性(ACID)原子性、一致性、隔离性、持久性? 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别? MySQL常见的三种存储引擎(InnoDB、…

    数据库 2023年6月16日
    083
  • Host-Only模式下虚拟机无法联网问题

    环境: 镜像:Linux CentOS7——————————…

    数据库 2023年6月11日
    080
  • go interface{}使用

    先上代码 为什么会报错? 因为空接口拥有两个指针,内存布局上会占用两个机器字长。 对于长度为n的空接口切片而言,它的每个元素都是以2机器字长为单位的连续空间,因此总共会占用 2n个…

    数据库 2023年6月9日
    068
  • MySQL45讲之查询慢或者阻塞

    前言 本文介绍了表锁定和执行速度慢的实例,以及表锁定时的故障排除方法。 [En] This paper introduces examples of table locking a…

    数据库 2023年5月24日
    0102
  • 关于缓存一致性协议、MESI、StoreBuffer、InvalidateQueue、内存屏障、Lock指令和JMM的那点事

    前言 事情是这样的,一位读者看了我的一篇文章,不认同我文章里面的观点,于是有了下面的交流。 可能是我发的那个狗头的表情,让这位读者认为我不尊重他。于是,这位读者一气之下把我删掉了,…

    数据库 2023年6月16日
    087
  • 设计模式之(8)——代理模式

    定义:为某个对象提供一个代理,以达到对这个对象的访问控制,代理类和委托类有共同的父类或者父接口,这样可以在使用委托类的地方都可以使用代理对象来替换(这符合程序设计中的”…

    数据库 2023年6月14日
    072
  • MySQL的Explain总结

    Explain简介 MySQL优化器在基于成本的计算和基于规则的SQL优化会生成一个所谓的 执行计划,我们就可以使用执行计划查看MySQL对该语句具体的执行方式。 介绍这个好啰嗦就…

    数据库 2023年5月24日
    068
  • mysql总结-思维导图

    posted on2022-05-08 21:45 搁浅的小鲸鱼 阅读(23 ) 评论() 编辑 Original: https://www.cnblogs.com/komoreb…

    数据库 2023年6月11日
    062
  • MySQL学习(4)—MySQL索引

    ps:没有特殊说明,此随笔中默认采用innoDB存储引擎中的索引,且索引都是指B+树(多路平衡搜索树)结构组织的索引。其中聚集索引、复合索引、前缀索引、唯一索引默认都是使用B+树,…

    数据库 2023年6月14日
    070
  • Mysql的知识梳理

    数据准备: –建表 create table customer_jia(CID int(4), Cname varchar(20), Csex varchar(2), …

    数据库 2023年6月16日
    077
  • python threading args参数报错must be an iterable, not int,解决方法

    错误代码: thread.append(threading.Thread(target=as_same_time, args=(0))) 分析: 因为as_same_time方法只…

    数据库 2023年6月11日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球