直接上代码

-- 删除存储过程
DROP PROCEDURE IF EXISTS `renew_message_queue`; -- 添加; 的转义
DELIMITER ;; CREATE PROCEDURE `renew_message_queue`()
BEGIN -- 旧表备份的后缀
DECLARE old_table_suffix VARCHAR(8) DEFAULT DATE_FORMAT(NOW(), '%Y%m%d'); -- 事务标记
DECLARE t_error INTEGER DEFAULT 0;
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @t_error=1; START TRANSACTION;
-- 创建表
CREATE TABLE `ecm_message_queue_new` LIKE `ecm_message_queue`; -- 备份旧表
SET @back_table_sql = CONCAT('ALTER TABLE ecm_message_queue RENAME TO ecm_message_queue_bak_', old_table_suffix);
-- 执行动态生成的sql语句
PREPARE temp FROM @back_table_sql;
EXECUTE temp; -- 重命名新表
ALTER TABLE ecm_message_queue_new RENAME TO ecm_message_queue; -- 将未处理的数据迁移到新表
SET @move_data_sql = CONCAT('INSERT INTO `ecm_message_queue` SELECT * FROM ecm_message_queue_bak_', old_table_suffix, ' WHERE send_status = 0');
-- 执行动态生成的sql语句
PREPARE temp FROM @move_data_sql;
EXECUTE temp; IF t_error = 1 THEN
ROLLBACK;
ELSE
COMMIT;
END IF; -- 返回标识位的结果集,可不执行
-- select t_error; END;
;;
DELIMITER ; CALL `renew_message_queue`();

Have fun with MySQL!

最新文章

  1. java 解析并生成 XML
  2. JSONP跨域的原理解析( 一种脚本注入行为)
  3. 正常月报表年初未分配利润修改backup
  4. [转载]在iTOP-4412开发板上调试helloworld应用
  5. mysql高可用方案总结性说明
  6. C# TcpListener的编程要点
  7. 添加标签2 jquery 和JS
  8. Windows文件居然有解锁一说,并且还会引起SignTool Error,真是昏倒!
  9. java 汉字转拼音
  10. Ninject的项目情况
  11. Python3实现简单的http server
  12. php的laravel框架使用心得
  13. 【BZOJ3530】数数(AC自动机,动态规划)
  14. Choosing The Commander CodeForces - 817E (01字典树+思维)
  15. 更改 centos 7的源为 阿里源
  16. 究竟 javascript 错误处理有哪些类型?
  17. C# sqlserver ExecuteNonQuery()方法详解
  18. SICP读书笔记 1.1
  19. Eloquent 条件查询——tucker-eric/eloquentfilter 笔记
  20. nginx.conf_2017-11-24

热门文章

  1. 使用idea创建项目如何忽略iml文件
  2. [图解]Windows下使用Zend Studio 10和XAMPP 1.8搭建开发环境,ZendFramework 2 HelloWorld
  3. qt 静态库中貌似不能使用静态属性
  4. linux 查看硬盘使用情况
  5. podium服务器端的微前端开发框架
  6. 你真的知道Java中boolean类型占用多少个字节吗?
  7. python 判断元素是否在一个列表中
  8. SpringCloud:搭建基于Gateway的微服务网关(一)
  9. Nginx目录文件列表显示
  10. <每日 1 OJ> -LeetCode 28. 实现 strStr()