mysql存储过程定时调度

这篇具有很好参考价值的文章主要介绍了mysql存储过程定时调度。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

假设我们要创建一个简单的数据库,其中包含两张表:students 表和 courses 表,以及一个存储过程用于插入学生数据。下面是完整的建表语句、插入语句和存储过程:

1】建表

-- 创建 courses 表
CREATE TABLE courses (
    course_id INT AUTO_INCREMENT PRIMARY KEY,
    course_name VARCHAR(100) NOT NULL,
    credit INT
);


-- 创建 students 表
CREATE TABLE students (
    student_id INT AUTO_INCREMENT PRIMARY KEY,
    student_name VARCHAR(50) NOT NULL,
    age INT,
    gender ENUM('Male', 'Female', 'Other'),
    course_id INT,
    FOREIGN KEY (course_id) REFERENCES courses(course_id) ON DELETE CASCADE ON UPDATE CASCADE
);


解释:

courses 表包含课程信息,其中 course_id 是主键字段,course_name 是课程名称字段,credit 是学分字段。

students 表包含学生信息,其中 student_id 是主键字段,student_name 是学生姓名字段,age 是年龄字段,gender 是枚举类型字段,course_id 是外键字段,关联到 courses 表的 course_id 字段

2】插入数据

-- 插入课程数据
INSERT INTO courses (course_name, credit) VALUES
    ('Mathematics', 4),
    ('Physics', 3),
    ('History', 2);

-- 插入学生数据
INSERT INTO students (student_name, age, gender, course_id) VALUES
    ('Alice', 20, 'Female', 1),
    ('Bob', 22, 'Male', 2),
    ('Eve', 19, 'Female', 1),
    ('Mike', 21, 'Male', 3);

3】创建存储过程

-- 创建存储过程,用于插入学生数据
DELIMITER //
CREATE PROCEDURE InsertStudent(IN student_name VARCHAR(50), IN age INT, IN gender ENUM('Male', 'Female', 'Other'), IN course_id INT)
BEGIN
    INSERT INTO students (student_name, age, gender, course_id) VALUES (student_name, age, gender, course_id);
END;
//
DELIMITER ;


-- 创建存储过程 UpdateAge,用于更新整个表的 age 字段:
DELIMITER //
CREATE PROCEDURE UpdateAge()
BEGIN
    UPDATE students SET age = age + 1;
END;
//
DELIMITER ;

mysql存储过程定时调度,mysql,数据库

mysql存储过程定时调度,mysql,数据库

 4】定时调度存储过程

在 MySQL 中,存储过程本身是不支持定时调度的。不过,你可以借助 MySQL 的事件调度器(Event Scheduler)来实现定时调度存储过程的执行。事件调度器是 MySQL 中的一个功能,可以周期性地执行一些指定的操作,包括调用存储过程

首先,需要确保 MySQL 的事件调度器已经启用。可以在 MySQL 客户端或者其他管理工具中执行以下语句来检查是否启用事件调度器:

SHOW VARIABLES LIKE 'event_scheduler';

如果结果为 ON,表示事件调度器已经启用;如果结果为 OFF,表示事件调度器未启用。如果未启用,可以通过以下语句来启用事件调度器:

SET GLOBAL event_scheduler = ON;
DELIMITER //
CREATE EVENT IF NOT EXISTS schedule_insert_student
ON SCHEDULE EVERY 1 MINUTE
DO
BEGIN
    CALL InsertStudent('John', 25, 'Male', 1);
END;
//
DELIMITER ;


DELIMITER //
CREATE EVENT IF NOT EXISTS schedule_update_age
ON SCHEDULE EVERY 1 MINUTE
DO
BEGIN
    CALL UpdateAge();
END;
//
DELIMITER ;

事件调度器将会每分钟执行一次,调用 InsertStudent 存储过程插入一条名为 "John" 的学生数据到 students 表中;调用了 UpdateAge 存储过程,将 students 表中的所有学生的年龄 age 加上 1。

调度几分钟之后(此时只运行了 schedule_insert_student)

mysql存储过程定时调度,mysql,数据库

再调度几分钟之后(此时运行了 schedule_insert_student、schedule_update_age)

mysql存储过程定时调度,mysql,数据库文章来源地址https://www.toymoban.com/news/detail-626190.html

到了这里,关于mysql存储过程定时调度的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL数据库——MySQL修改存储过程(ALTER PROCEDURE)

    在实际开发过程中,业务需求修改的情况时有发生,所以修改 MySQL 中的存储过程是不可避免的。 MySQL 中通过 ALTER PROCEDURE 语句来修改存储过程。下面将详细讲解修改存储过程的方法。 MySQL 中修改存储过程的语法格式如下: ALTER PROCEDURE 存储过程名 [ 特征 ... ] 特征 指定了存储

    2024年02月04日
    浏览(32)
  • Mysql数据库实验报告--实验五 存储过程和触发器

    在这个系列会更新一些最近老师要求写的实验报告~ 大家尽量对着我的文章做一个参考,不要盲目的cv,毕竟这个对于我们以后的工作学习还是十分重要的。 从这个实验开始,就不在cmd命令行里面进行mysql数据库的操作,因为代码长度和代码的复杂性,需使用 MySQL Workbench: 双

    2024年02月09日
    浏览(41)
  • MySQL数据库——存储过程-变量(系统变量、用户定义变量、局部变量)

    目录 系统变量  1.查看系统变量  2.设置系统变量 演示示例 用户定义变量 1.赋值  2.使用 演示示例 局部变量 声明  赋值 演示示例 变量 在MySQL中变量分为三种类型: 系统变量、用户定义变量、局部变量。 系统变量是MySQL服务器提供,不是用户定义的,属于服务器层面。分为全

    2024年02月05日
    浏览(39)
  • 使用MySQL存储过程提高数据库效率和可维护性

    MySQL 存储过程是一种强大的数据库功能,它允许你在数据库中存储和执行一组SQL语句,类似于编程中的函数。存储过程可以大幅提高数据库的性能、安全性和可维护性。本文将详细介绍MySQL存储过程的使用。 MySQL存储过程是一组预编译的SQL语句,它们以一个名称存储在数据库

    2024年02月08日
    浏览(35)
  • MySQL数据库——存储过程-介绍以及基本语法(特点、创建、调用、查看、删除、示例)

    目录 介绍 特点 基本语法 创建 调用 查看 删除  示例  存储过程是 事先经过编译 并 存储在数据库 中的一段 SQL 语句的 集合 ,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想

    2024年02月06日
    浏览(46)
  • 数据库系统原理及MySQL应用教程实验七存储过程与函数的创建管理

    1. 理解存储过程和函数的概念。 2. 掌握创建存储过程和函数的方法。 3. 掌握执行存储过程和函数的方法。 4. 掌握游标的定义、使用方法。 1.验证性实验:某超市的食品管理的数据库的Food表对其操作。 2.设计性试验:学校教师管理数据库中的teacherInfo表对其操作。 三、实验步

    2024年02月03日
    浏览(42)
  • 【MySQL】探索MySQL存储过程的魔力,初学者的数据库编程秘笈(内含实战SQL脚本)

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温MySQL MySQL存储过程作为一种服务器端的 数据库编程方式 ,提供了高效、可重用的方法来执行相对复杂的数据库操

    2024年02月15日
    浏览(48)
  • 数据库: 存储过程

    sql server begin end用法: SQL Server中的BEGIN END用法是用于定义一个代码块,这个代码块可以包含多个SQL语句,BEGIN END通常用于控制流程语句,例如IF语句、WHILE语句、TRY CATCH语句等。在BEGIN END代码块中,可以使用变量、函数、存储过程等SQL Server的元素。BEGINEND的语法如下: BEGIN SQL语

    2024年02月09日
    浏览(31)
  • Oracle数据库创建存储过程

    下面是一个迁移数据库数据的存储过程: 存储过程中用到的 while 循环逻辑:  

    2024年02月11日
    浏览(33)
  • 数据库实验6 存储过程实验

    前言:游标的mysql代码不懂写,所以没有运行结果 实验6.1 存储过程实验 1.实验目的 掌握数据库 PL/SQL 编程语言,以及数据库存储过程的设计和使用方法。 2.实验内容和要求 存储过程定义,存储过程运行,存储过程更名,存储过程删除,存储过程的参数传递。掌握PL/SQL编程语言和编

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包