天天看點

MySQL利用存儲過程清除所有表中的所有記錄

MySQL利用存儲過程清除所有表中的所有記錄

在使用MySQL過程中,難免會出現一些測試資料,然而這些測試資料在真正部署運作的時候,通常要被清楚掉,并且自增長的字段要回複初始值。如何高效快速的實作以上功能,可以使用存儲過程實作這一個功能。

主要使用:TRUNCATE TABLE。不僅可以清楚資料,而且可以使自增長字段歸為1:

BEGIN
    DECLARE strClear VARCHAR(256);
    DECLARE done INT DEFAULT 0;
    #定義遊标
    DECLARE curOne CURSOR FOR SELECT CONCAT('TRUNCATE TABLE ',TABLE_NAME,';') as ClearTable FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = DBName;
    #綁定控制變量到遊标,遊标循環結束自動轉為True
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    #打開遊标
    OPEN curOne;

    FETCH curOne INTO strClear;
    REPEAT
        FETCH curOne INTO strClear;
        #SELECT strClear;

        #動态執行SQL語句
        SET @mysql = strClear;
        PREPARE stmt from @mysql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt;

        UNTIL done = 1 END REPEAT;

    #關閉遊标
    CLOSE curOne;
END           

執行存儲過程之前:

執行存儲過程之後:

原文位址

http://www.bieryun.com/3535.html