返回顶部

收藏

Mysql 删除所有表,需要考虑外键约束

更多

下面存储过程,使用游标遍历information_schema库里的tables表来实现:

CREATE PROCEDURE `drop_all_tables`()
BEGIN
    DECLARE _done INT DEFAULT FALSE;
    DECLARE _tableName VARCHAR(255);
    DECLARE _cursor CURSOR FOR
        SELECT table_name 
        FROM information_schema.TABLES
        WHERE table_schema = SCHEMA();
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET _done = TRUE;

    SET FOREIGN_KEY_CHECKS = 0;

    OPEN _cursor;

    REPEAT FETCH _cursor INTO _tableName;

    IF NOT _done THEN
        SET @stmt_sql = CONCAT('DROP TABLE ', _tableName);
        PREPARE stmt1 FROM @stmt_sql;
        EXECUTE stmt1;
        DEALLOCATE PREPARE stmt1;
    END IF;

    UNTIL _done END REPEAT;

    CLOSE _cursor;
    SET FOREIGN_KEY_CHECKS = 1;
END

使用这个存储过程可以方便的删除所有数据表

标签:mysql,存储过程,游标

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. viggo 发表 2015-12-04 23:19:39 mysql通过存储过程生成流水号(订单编号)
  2. smalleyes 发表 2014-10-16 03:32:30 调用存储过程出错ERROR 1436 (HY000): Thread stack overrun:
  3. smalleyes 发表 2014-10-16 08:50:58 存储过程之查看
  4. 胡 志伟 发表 2014-04-09 09:37:26 Mysql存储过程计算留存率
  5. smalleyes 发表 2014-10-16 09:59:53 存储过程之变量
  6. OurMySQL 发表 2014-11-25 23:11:25 PHP调用存储过程返回值不一致的问题
  7. 傲风 发表 2016-01-04 12:08:44 MySQL 5.5将字符集从utf8升级为utf8mb4
  8. HarveyZ 发表 2016-01-10 17:03:48 MySQL ICP概念讲解
  9. lalor 发表 2016-01-19 07:38:40 MySQL查询计划key_len全知道
  10. HDR 发表 2015-11-11 06:27:22 修复 MySQL 数据库结构错误 – 升级[转]
  11. phpor 发表 2016-02-14 07:51:02 mysql监控管理工具–innotop
  12. AskInside 发表 2016-02-23 07:15:32 Oracle官方并行逻辑备份工具mysqlpump

发表评论