mysql存储过程和事件
2018-06-14 本文已影响16人
liamu
事件
什么是事件及其作用
event及“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的SQL语句或存储过程。
用于某一时间执行一个事件或周期性执行一个事件。
常见用法
- 查看事件是否开启
SHOW VARIABLES LIKE 'event_scheduler';
- 开启事件
SET GLOBAL event_scheduler = 1;
- 创建事件
CREATE EVENT IF NOT EXISTS e_test
ON SCHEDULE EVERY 1 SECOND
ON COMPLETION PRESERVE
DO CALL select_stu();
- 查看当前已有事件:
SHOW EVENTS
select * from mysql.event;
- 删除事件
DROP EVENT [IF EXISTS] e_test;
- 临时关闭事件
alter event del_history disable;
- 临时开启事件
alter event del_history enable;
- 删除计划任务
drop event del_history;
创建存储过程
- 什么是存储过程
一组可编程的函数,是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。 - 事例一:
delimiter $$ #将语句的结束符号从分号;临时改为两个$$(可以是自定义)
create procedure delete_stu(in p_sid integer) begin delete from students where sid = p_sid; end$$
delimiter ; #将语句的结束符号恢复为分号
- 事例二:
delimiter $$
create procedure select_stu() begin select * from students; end$$
delimiter ;
- 删除存储过程:
drop PROCEDURE select_stu;
- 执行存储过程:
call delete_stu(10000);
- 查看已创建存储过程
show procedure status;
参考: