MySQL 利用触发器调用存储过程定时创建分表

Jackey MySQL 473 次浏览 , , 1条评论

1.创建模板表:如test

2.创建存储过程

  1. DELIMITER //
  2. CREATE PROCEDURE create_table()
  3. BEGIN
  4. DECLARE `@suffix` VARCHAR(15);
  5. DECLARE `@sql_str` VARCHAR(2560);
  6. SET `@suffix` = DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 1 MONTH),'_%Y%m');
  7. SET @sql_str = CONCAT("CREATE TABLE IF NOT EXISTS test",`@suffix`," LIKE test;");
  8. PREPARE stmt FROM @sql_str;
  9. EXECUTE stmt;
  10. END;

3.创建触发器

  1. DELIMITER $$
  2. CREATE EVENT event_create_table
  3. ON SCHEDULE
  4. EVERY 1 MONTH
  5. STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())+1 DAY), INTERVAL 0 MONTH),INTERVAL 0 HOUR)
  6. ON COMPLETION PRESERVE
  7. ENABLE
  8. DO
  9. BEGIN
  10. CALL create_table();
  11. END$$
  12. DELIMITER ;

4.查看定时器开关有没有开启

  1. SHOW VARIABLES LIKE 'event%';

如果是off,则设置开启

SET GLOBAL event_scheduler = ON;

一条评论

  1. 趣知识 2019年11月16日 下午4:34 回复

    这个我会,在学习一下

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go