MySQL 通过事件备份数据库表-包含数据、结构、主键、索引
-- 说明:
-- 1. 仅复制表结构:create table my_table_copy2 like my_table;
-- 2. 复制表结构和数据:create table my_table_copy1 select * from my_table; -- 只是按select语句执行的结果新建表,并不会复制表的主键、索引等信息
-- 3. 完全复制表:
-- 	create table my_table_copy2 like my_table;
-- 	insert into my_table_copy2 select * from my_table;
-- 4. 复制表,同时重新定义字段名:
-- 	create table my_table_copy3
-- 	select id,username yhm,realname xm,email dzyj,address dz from my_table;
-- 5. 复制表,同时定义字段信息:
-- 	create table my_table_copy4
-- 	(
-- 	id INTEGER not null auto_increment PRIMARY KEY
-- 	)
-- 	select * from my_table;
--  打开查询执行 SET GLOBAL event_scheduler = ON; 开启事件
-- 查询事件状态:show variables like "event_scheduler" ;
BEGIN
-- 时间格式Format
set @v_bak = (DATE_FORMAT(CURRENT_DATE(),'%Y%m%d'));
-- 字符串拼接
SET @newTableName = CONCAT('expresspackage_',@v_bak,'bak');
-- 1.创建备份表
SET @sql_stmt_ins1=CONCAT('CREATE TABLE ', @newTableName , ' like expresspackage;');
-- 1.3预处理需要执行的动态SQL
PREPARE stmt_ins1 FROM @sql_stmt_ins1;
-- 执行SQL语句
EXECUTE stmt_ins1;
-- 释放掉预处理段
DEALLOCATE PREPARE stmt_ins1;
-- 1.2备份表数据
SET @sql_stmt_ins1s=CONCAT('insert into ', @newTableName, ' select * from expresspackage;');
-- 1.3预处理需要执行的动态SQL
PREPARE stmt_ins1s FROM @sql_stmt_ins1s;
-- 执行SQL语句
EXECUTE stmt_ins1s;
-- 释放掉预处理段
DEALLOCATE PREPARE stmt_ins1s;
-- 更新表内某个字段
update expresspackage
set CreateTime = REPLACE(CreateTime,DATE_FORMAT(DATE_SUB(CURRENT_DATE(),INTERVAL 1 DAY),'%Y-%m-%d'),DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d')) WHERE ID in 
(SELECT ID from 
(
SELECT id from expresspackage where CreateTime < DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d')
) as a
)
;
END
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号