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