您的位置:68399皇家赌场 > 虚拟主机 > Navicat Premium创设事件布置调用MySql存款和储蓄进程

Navicat Premium创设事件布置调用MySql存款和储蓄进程

发布时间:2019-05-02 19:26编辑:虚拟主机浏览(55)

    1、检查事件安排,操作:工具——命令行分界面——实行命令 show variables like '%event_scheduler%'; (分号不可能丢)—— event_scheduler  ON 代表开启 event_scheduler OFF 代表关闭 

    任务急需:定时实行的职务,调用存款和储蓄进度,进行多少迁移。

     

     什么是事件: 

    一组SQL集,用来实践定期职务,跟触发器很像,都以被动试行的,事件是因为时间到了接触试行,而触发器是因为某件事件(增删改)触发试行;

    翻看是或不是张开:

    show variables like 'event_scheduler';
    

    万壹彰显OFF,则输入以下语句开启:

    set global event_scheduler = on;
    

    唤醒:即使这里用set global event_scheduler = on语句开启了风云,不过每趟重启Computer。或重启mysql服务后,会发觉,事件自动关闭(event_scheduler=OFF),所以想让事件平素维持开启,最佳修改配置文件,让mysql服务运维的时候张开时间,只要求在my.ini安排文件的[mysqld]部分加上event_scheduler=ON 即可,如下:

    自定义事件比方

    首先、新建user表:

    澳门皇家赌场55533网址 1

    -- ----------------------------
    -- Table structure for `user`
    -- ----------------------------
    DROP TABLE IF EXISTS `user`;
    CREATE TABLE `user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `name` varchar(200) NOT NULL,
      `address` varchar(500) NOT NULL,
      `addtime` datetime NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    澳门皇家赌场55533网址 2

    下一场、新建事件,有三种事件类型,三个是距离触发,另3个是一定事件触发。

    mysql定时器

    mysql沙漏既是mysql的风浪,在骨子里开辟中,大家有时须要定期去实行一些操作,大多数人经过ScheduledExecutorService类去创建定期,那种若是遇上海高校数额的换代的时候,运营速度相比忙,那时候大家能够设想使用mysql机械漏刻去实践SQL脚本文件。

    要使用mysql定时器。

    首先必须运行调节器“event_scheduler”。

     

    翻开当前是否已展开事件安排(调解器)有3种格局:

    1) SHOW VARIABLES LIKE 'event_scheduler';

    2) SELECT @@event_scheduler;

    3) SHOW PROCESSLIST;

    敞开事件布置(调解器)按键有四种艺术:

    1) SET GLOBAL event_scheduler = 1;

    2) SET @@global.event_scheduler = 1;

    3) SET GLOBAL event_scheduler = ON;

    4) SET @@global.event_scheduler = ON;

    支持是创制停车计时器事件,能够经过sql创制,也得以安装Navicat Premium(mysql客户端)创造。

    壹)通过sql创制停车计时器事件:

    create event if not exists eventJob
    on schedule every 2 second STARTS '2015-07-14 00:00:00'
    on completion PRESERVE

    ENABLE
    do call mypro();

    上述sql脚本中“eventJob ”为沙漏事件名称,“mypro”为mysql函数或许存款和储蓄进程。sql脚本表示从 '201伍-07-14 00:00:00'起始,每贰分钟实行mypro()函数一次。当然也能够设置落成时间。

    二) 通过客户端创设停车计时器事件:

    澳门皇家赌场55533网址 3

    如图中所示,call关键字后是必要进行的函数或许存款和储蓄进度;状态表示停车计时器事件的动静,是还是不是启用,enable代表启用,disable代表不启用,能够手动设置也足以通过sql来伸开安装; on completion设置为“PRESE哈弗VE”。

    澳门皇家赌场55533网址 4

    “陈设”中标签中,重假使设置停车计时器的成效和始发终结时间。AT表示,从脚下mysql数据库时间起先(那些时刻是从运营器启用开始,即当状态为“ENABLE”时),依据早晚频率的推行;EVE奥德赛Y是自定义初始时间和终止时间;相对来书EVETucsonY比较灵活,使用方便。

    末段,当然是设置放大计时器事件的情形。

    在上一步中,大家无论sql创立可能客户端创制都得以安装景况,但是当我们一贯不设置情况也许说关闭停车计时器事件的时候,就供给进行sql

    ALTEMurano EVENT eventJob ON COMPLETION PRESEEscortVE ENABLE; ---- 开启事件
    ALTE智跑 EVENT eventJob ON COMPLETION PRESE揽胜极光VE DISABLE; ---- 关闭事件

    mysql沙漏既是mysql的轩然大波,在实质上成本中,大家偶尔要求按期去试行一些操作,半数以上人通过ScheduledExecutorService类去创立按期...

    *
    澳门皇家赌场55533网址 5*

    积攒进程有关总结:(存款和储蓄进程的创建  无法陪伴有if exists  需求超前决断删除同名的贮存进程)

    体系壹:每隔一秒钟插入一条数据:

    参数表达:

    DEFINER:创建者;

    ON COMPLETION [NOT] PRESE普拉多VE :表示当事件不会再发生的情事下,删除事件(注意一定时期实施的轩然大波,借使设置了该参数,施行达成后,事件将被去除,不想删除的话能够设置成ON COMPLETION PRESE昂科雷VE);

    ENABLE:表示系统将实行这么些事件;

    澳门皇家赌场55533网址 6

    -- ----------------------------
    -- Event structure for `event_minute`
    -- ----------------------------
    DROP EVENT IF EXISTS `event_minute`;
    DELIMITER ;;
    CREATE DEFINER=`xxxxx`@`10.36.40.1` EVENT `event_minute` ON SCHEDULE EVERY 1 MINUTE STARTS '2016-08-15 22:46:33' ON COMPLETION NOT PRESERVE ENABLE DO 
    
    BEGIN
        INSERT INTO USER(name, address,addtime) VALUES('test1','test1',now());
        INSERT INTO USER(name, address,addtime) VALUES('test2','test2',now());
    END
    ;;
    DELIMITER ;
    

    澳门皇家赌场55533网址 7

    二、开启事件计划——命令行分界面——实践命令  set global event_scheduler=on;(分号不可能丢)

    积攒进程的查看:

    花色二:特定期刻插入一条数据,如2016-01-17 15:30:00**

    参数表明:

    DEFINER:创建者;

    ON COMPLETION [NOT] PRESECR-VVE :表示当事件不会再发生的气象下,删除事件(注意一定时间推行的风云,若是设置了该参数,实施实现后,事件将被删除,不想删除的话能够设置成ON COMPLETION PRESE锐界VE);

    ENABLE:表示系统将实践这些事件;

    澳门皇家赌场55533网址 8

    -- ----------------------------
    -- Event structure for `event_at`
    -- ----------------------------
    DROP EVENT IF EXISTS `event_at`;
    DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` EVENT `event_at` ON SCHEDULE AT '2016-01-17 15:30:00' ON COMPLETION NOT PRESERVE ENABLE DO 
    
    BEGIN
        INSERT INTO USER(name, address,addtime) VALUES('AT','AT',now());
    END
    ;;
    DELIMITER ;
    

    澳门皇家赌场55533网址 9

    翻开结果,结果准确:

    澳门皇家赌场55533网址 10

    澳门皇家赌场55533网址 11

    select name from mysql.proc where db = your_db_name and type = PROCEDURE

     

     

     

     

     

    mysql的定期任务一般用event(事件)来形成,触发器不大概完结。
    一、通过mysql的吩咐行客户端来完结
    1、set global event_scheduler =1; //开启event_scheduler
    试行这几个讲话假如出现,可在mysql的布置文书档案中安装[mysqld]段中增加event_scheduler=ON
    如果重启mysql;那种情形下如故出错,Error Code: 1290. The MySQL server is running with the --event-scheduler=DISABLED 
    or --skip-grant-tables option so it cannot execute this statement,这几个似是而非是说运维服务器时假设内定了--skip-grant-tables选项,则event_scheduler则自动被安装为DISABLED。命令行或配备文件的装置都会被覆盖。建议再次出现安装mysql或是修改运转参数(在系统服务中内定)。

    查看event_scheduler状态:show status like '%event%'; 或SELECT @@event_scheduler;
    2、CREATE PROCEDURE Mypro() //创设存款和储蓄进度

    BEGIN
    update userinfo SET endtime = now() WHERE id = '155';
    END;
    3、创建event My_enevt,每隔三10秒施行二次
    create event if not exists e_test
    on schedule every 30 second
    on completion preserve
    do call Mypro();
    肆、关闭事件 
    alter event e_test ON COMPLETION PRESERVE DISABLE;
    5、开启事件
    alter event e_test ON COMPLETION PRESERVE ENABLE;
    语法:
    CREATE EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION
    [NOT] PRESERVE] [ENABLE | DISABLE] [COMMENT 'comment'] DO sql_statement;
    schedule: AT TIMESTAMP [ INTERVAL INTERVAL] | EVERY INTERVAL [STARTS TIMESTAMP]
    [ENDS TIMESTAMP] INTERVAL: quantity {YEAR | QUARTER | MONTH | DAY | HOUR |
    MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | DAY_SECOND |
    HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

    示例:

    1) 首先来看一个简短的事例来演示每秒插入一条记下到数据表
    CREATE EVENT e_test_insert ON SCHEDULE EVERY 1 SECOND DO INSERT INTO test.aaa VALUES  (CURRENT_TIMESTAMP);

    2) 5天后清空test表:
    CREATE EVENT e_test ON SCHEDULE AT CURRENT_TIMESTAMP INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;

    3) 20一三年7月1三十一日12点整清空test表:
    CREATE EVENT e_test ON SCHEDULE AT TIMESTAMP '2013-07-20 12:00:00' DOTRUNCATE TABLE test.aaa;

    4) 每一天按期清空test表:
    CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY DO TRUNCATE TABLE test.aaa;

    五) 三日后张开每日定期清空test表:
    CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;

    6) 每一日按期清空test表,五日后终止施行:
    CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY ENDS CURRENT_TIMESTAMP INTERVAL 5 DAY DO TRUNCATE TABLE test.aaa;

    7) 伍天后展开天天定期清空test表,三个月后终止执行:
    CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP

    • INTERVAL 5 DAY ENDS CURRENT_TIMESTAMP INTERVAL 1 MONTH DO TRUNCATE TABLE test.aaa;

    [ON COMPLETION [NOT] PRESERVE]能够安装那个事件是试行3次依旧持久实行,默认为NOT PRESE福特ExplorerVE
    8)
    每一日定期清空test表(只进行3遍,职责达成后就止住该事件):
    CREATE EVENT e_test ON SCHEDULE EVERY 1 DAY ON COMPLETION NOT PRESERVE DO TRUNCATE TABLE test.aaa;

    [COMMENT
    comment]能够给该事件加上注释

    二>修改事件(ALTE凯雷德 EVENT)
    ALTER EVENT event_name [ON SCHEDULE schedule] [RENAME TO new_event_name]
    [ON COMPLETION [NOT] PRESERVE] [COMMENT 'comment'] [ENABLE | DISABLE] [DO
    sql_statement]

    壹) 目前关闭事件
    ALTER EVENT e_test DISABLE;

    二) 开启事件
    ALTER EVENT e_test ENABLE;

    叁) 将天天清空test表改为五天清空三次:
    ALTER EVENT e_test ON SCHEDULE EVERY 5 DAY;

    叁>删除事件(DROP EVENT)

    语法很简短,如下所示:
    DROP EVENT [IF EXISTS] event_name

    譬如删除后面创造的e_test事件
    DROP EVENT e_test;

    理所当然前提是这一个事件存在,不然会生出ETiggoRO中华V 15一三 (HY000): Unknown event错误,因而最棒拉长IF EXISTS
    DROP EVENT IF EXISTS e_test;

    2、使用第一方工具来创制,推荐应用HeidiSQL网址:澳门皇家赌场55533网址,,免费的开源客户端,由德国技师Ansgar Becker开垦;这一个软件的分界面有普通话分界面。
    开垦HeidiSQL,右键单击表名,选创设新的的美食做法,再选事件就可以,很便利,大家能够编写事件的命宫设置和代码。这里定义人填写root@localhost。

    三、创设事件陈设,操作:连接名——数据库——事件——新建事件

    show procedure status;

    澳门皇家赌场55533网址 12

    查看存储进度或函数的始建代码

    4、事件安插设置,定义——填写要调用的贮存进程(要旗开马到的要求),安插——设置事件安顿的推行时间

    show create procedure proc_name;

    澳门皇家赌场55533网址 13

    累积过程的成立 语法以及境遇的主题材料

    伍、保存——输入事件陈设名——鲜明

    MySQL中,成立存款和储蓄进度的主干情势如下:

    澳门皇家赌场55533网址 14

    CREATE PROCEDURE sp_name ([proc_parameter[,...]])

     

    [characteristic ...] routine_body

    其中,sp_name参数是储存进度的名号;proc_parameter表示存款和储蓄进度的参数列表; characteristic参数内定期存款储进度的特色;routine_body参数是SQL代码的始末,能够用BEGIN…END来表达SQL代码的开头和终结。

    proc_parameter中的每一个参数由三有的组成。那3有的个别是输入输出类型、参数名称和参数类型。其款式如下:

    [ IN | OUT | INOUT ] param_name type

    其间,IN表示输入参数;OUT表示输出参数; INOUT代表既能够是输入,也得以是出口; param_name参数是积存进度的参数名称;type参数钦点期存款款和储蓄进度的参数类型,该类型可以是MySQL数据库的妄动数据类型。

    characteristic参数有两个取值。其取值表达如下:

    LANGUAGE SQL:说明routine_body部分是由SQL语言的言语组成,那也是数据库系统暗许的言语。

    [NOT] DETE兰德EnclaveMINISTIC:指明存款和储蓄进度的实施结果是不是是明确的。DETE昂CoraMINISTIC表示结果是鲜明的。每一遍试行存款和储蓄进度时,同样的输入会收获平等的输出。NOT DETE君越MINISTIC表示结果是非鲜明的,同样的输入大概赢得分裂的输出。默许景况下,结果是非明确的。

    { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }:指明子程序选拔SQL语句的限定。CONTAINS SQL表示子程序包涵SQL语句,但不带有读或写多少的口舌;NO SQL表示子程序中不含有SQL语句;READS SQL DATA表示子程序中蕴藏读数据的言语;MODIFIES SQL DATA表示子程序中蕴涵写多少的言辞。暗中认可情状下,系统会钦点为CONTAINS SQL。

    SQL SECU牧马人ITY { DEFINELX570 | INVOKEXC90}:指明何人有权力来试行。DEFINE奥迪Q3代表除非定义者本人才具够实行;INVOKETiggo表示调用者能够进行。私下认可情状下,系统内定的权柄是DEFINELacrosse。

    COMMENT 'string':注释消息。

    手艺:创设存款和储蓄进度时,系统暗许钦定CONTAINS SQL,表示存款和储蓄进程中动用了SQL语句。但是,固然存款和储蓄进度中绝非选拔SQL语句,最佳设置为NO SQL。而且,存款和储蓄进程中最棒在COMMENT部分对存款和储蓄进度进展简短的疏解,以便现在在翻阅存款和储蓄进程的代码时进一步有利于。

    创建贰个名称叫num_from_employee的储存进程。代码如下:

    CREATE  PROCEDURE  num_from_employee (IN emp_id INT, OUT count_num INT )

    READS SQL DATA

    BEGIN

    SELECT  COUNT(*)  INTO  count_num

    FROM  employee

    WHERE  d_id=emp_id ;

    END

    上述代码中,存款和储蓄进程名字为num_from_employee;输入变量为emp_id;输出变量为count_num。SELECT语句从employee表查询d_id值等于emp_id的记录,并用COUNT(*)计算d_id值一样的记录的条数,最终将总括结果存入count_num中。代码的实施结果如下:

    mysql> DELIMITER &&

    mysql> CREATE  PROCEDURE  num_from_employee

    (IN emp_id INT, OUT count_num INT )

    -> READS SQL DATA

    -> BEGIN

    -> SELECT  COUNT(*)  INTO  count_num

    -> FROM  employee

    -> WHERE  d_id=emp_id ;

    -> END &&

    Query OK, 0 rows affected (0.09 sec)

    mysql> DELIMITER ;

    代码奉行实现后,未有报出任何失误新闻就表示存款和储蓄函数已经创办成功。以往就足以调用这么些蕴藏进程,数据库中会实施存款和储蓄进程中的SQL语句。

    证实:MySQL中私下认可的话语甘休符为分号(;)。存款和储蓄进度中的SQL语句必要分号来    截至。为了幸免争辨,首先用"DELIMITE大切诺基&&"将MySQL的截止符设置为&&。最后再用"DELIMITE科雷傲;"来将结束符复苏成分号。那与创立触发器时是同样的。

    一、MySQL 成立存储进度

    “pr_add” 是个简易的 MySQL 存款和储蓄进度,这么些蕴藏进程有多少个 int 类型的输入参数 “a”、“b”,再次回到那五个参数的和。

    drop procedure if exists pr_add;

    -- 总括四个数之和

    create procedure pr_add

    (

    a int,

    b int

    )

    begin

    declare c int;

    if a is null then

    set a = 0;

    end if;

    if b is null then

    set b = 0;

    end if;

    set c = a b;

    select c as sum;

    /*

    return c;- 不能够在 MySQL 存款和储蓄进度中利用。return 只好出现在函数中。

    /

    end;

    二、调用Mysql存款和储蓄进度

    eg: call pr_add(10,20);

    试行 MySQL 存款和储蓄进程,存储进度参数为 MySQL 用户变量。

    set @a = 10;

    set @b = 20;

    call pr_add(@a, @b);

    一经存款和储蓄进程如下:create procedure pr_return2Pr(a int,out b int,inout c int) begin set b =a; set c = a c; end

    set @cc = 3;call pr_return2Pr(1,@bb,@cc);select @bb,@cc; 返回1,4

    假若存储进程中变量定义为out,能够不实行变量值定义,直接注解就可以。inout  则需求超前set 变量,然后调用。

    IN为暗许类型,值必须在调用时钦点,值不能够重临(值传递)

    OUT值能够回去(指针传递)

    INOUT值必须在调用时内定,值能够回来

    选拔DECLARE来声称,DEFAULT赋暗中同意值,SET赋值

    DECLARE counter INT DEFAULT 0;  - 默认为0

    SET counter = counter 1;              - 自增 1

    三、MySQL 存款和储蓄进度特征

    创造 MySQL 存款和储蓄进程的简要语法为:

    create procedure 存款和储蓄过程名字()

    本文由68399皇家赌场发布于虚拟主机,转载请注明出处:Navicat Premium创设事件布置调用MySql存款和储蓄进程

    关键词: 68399皇家赌场 日记本 mysql