joozh 发表于 2015-9-9 13:41:02

mysql 删除表中所有数据,但不删除表结构

  准备一个存储过程,我要删除的数据库是icinga,要删除别的可以替换,等会使用
   CREATE PROCEDURE clear()
BEGIN
DECLARE done INT DEFAULT 0;#游标的标志位
DECLARE name varchar(50);
DECLARE cmd varchar(150);
DECLARE tb_name CURSOR FOR SELECT table_name FROM information_schema.TABLES WHERE table_schema='icinga';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN tb_name;
REPEAT
    FETCH tb_name INTO name;
    IF NOT done THEN
       #set cmd=concat('Delete from ',DB_NAME,'.','`',`name`,'`');
       set cmd=concat('TRUNCATE table ','icinga','.','`',`name`,'`');# 拼删除命令
       SET @E=cmd;
       PREPARE stmt FROM @E;
          EXECUTE stmt;
          DEALLOCATE PREPARE stmt;
    END IF;
UNTIL done END REPEAT;
CLOSE tb_name;
END;
  
  然后登录mysql

  mysql -h 10.1.70.41 -uroot -p
  mysql>delimiter // #以//作为分割,默认的是;

  mysql>复制上面的procedure过来
  mysql>//
  然后创建成功。
  mysql>use icinga

  mysql>call clear
  就调用了。最后调整回来间隔;
  mysql>delimiter ;
页: [1]
查看完整版本: mysql 删除表中所有数据,但不删除表结构