mysql 备份表的一个方法

#--- start

# 新建表
 create table sp2_match_comment_tmp like sp2_match_comment; # 这种方式 外键索引,触发器不会在新表中有,要自己添加

LOCK TABLES sp2_match_comment write, sp2_match_comment AS smc2 read, sp2_match_comment_tmp write;


# 导出最新数据到新表
insert into sp2_match_comment_tmp 
	select * from sp2_match_comment where id > 
		(select id from sp2_match_comment AS smc2 where addtime<start_date order by id desc limit 1);

# 原表改为备份表
alter table sp2_match_comment rename to @backup_table;

# 新表成为原表,
alter table sp2_match_comment_tmp rename to sp2_match_comment;


# 触发器 start ---
USE `spider_news`;
DELIMITER $$
DROP TRIGGER IF EXISTS spider_news.sp2_match_comment_AFTER_INSERT$$
USE `spider_news`$$
CREATE DEFINER=`shihe`@`%` TRIGGER `spider_news`.`sp2_match_comment_AFTER_INSERT` AFTER INSERT ON `sp2_match_comment` FOR EACH ROW
BEGIN
update sp2_match_news set cmt_num=cmt_num+1 where id=new.match_news_id;
update sh_article set cmt_num=cmt_num+1 where id in (
	select article_id from sp2_article_match_news where match_news_id=new.match_news_id
);
END$$
DELIMITER ;
# 触发器 end ---

UNLOCK TABLES;

delete from @backup_table where id >= (select id from sp2_match_comment order by id limit 1);


# ---end

猜你喜欢

转载自ww111.iteye.com/blog/2271970