zoukankan      html  css  js  c++  java
  • MySQL实战练习

    在测试Django的数据库同步时,经常会出现需要Drop掉MySql数据库表情况。单独开发了一个MySQL删除脚本。

    其中涉及到动态语法与MySQL的数据字典概念。

    CREATE DEFINER = 'Product'@'localhost' PROCEDURE `ClearTables`(
    IN Confirm BOOLEAN
    )
    DETERMINISTIC
    MODIFIES SQL DATA
    SQL SECURITY DEFINER
    COMMENT ''
    BEGIN
    declare done int;
    declare vcTableName varchar(64);
    declare dropSyntax varchar(200);
    declare vcForeKey varchar(64);
    DECLARE fk_cursor CURSOR FOR
    SELECT table_name, CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE K
    where referenced_table_name is not null and table_schema = <替代相关的数据库名>;

    DECLARE tb_cursor CURSOR FOR
    SELECT
    `T`.`table_name`
    FROM
    `information_schema`.`TABLES` `T`
    WHERE
    `table_schema` = <替代相关的数据库名>;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;

    exitProc:Begin
    if NOT Confirm then
    leave exitProc;
    end if;

    set done = 0;
    open fk_cursor;
    fk_loop:loop
    FETCH fk_cursor into vcTableName, vcForeKey;
    if done = 1 then
    leave fk_loop;
    end if;
    set @dropSyntax = CONCAT("alter table ", vcTableName, " DROP FOREIGN KEY ", vcForeKey);
    PREPARE stmt_fk FROM @dropSyntax;
    EXECUTE stmt_fk ;
    DEALLOCATE PREPARE stmt_fk;
    /*execute immediate :dropSyntax;*/
    end loop fk_loop;
    close fk_cursor;

    set done = 0;
    open tb_cursor;
    tb_loop:loop
    FETCH tb_cursor into vcTableName;
    if done = 1 then
    leave tb_loop;
    end if;
    set @dropSyntax = CONCAT("drop table ", vcTableName);
    PREPARE stmt_tb FROM @dropSyntax;
    EXECUTE stmt_tb ;
    DEALLOCATE PREPARE stmt_tb;
    /*execute immediate :dropSyntax;*/
    end loop tb_loop;
    close tb_cursor;
    End;

    END;

  • 相关阅读:
    5.模拟线程切换
    3.KPCR
    Java概述--Java开发实战经典
    java中设置虚拟机最大内存
    java static代码段
    原码、反码、补码的理解
    使用jmatio读写matlab数据文件
    matlab常用函数
    java的classpath和path理解
    读取SequenceFile中自定义Writable类型值
  • 原文地址:https://www.cnblogs.com/zhpwan/p/2305518.html
Copyright © 2011-2022 走看看