在項(xiàng)目上線之前,會經(jīng)歷一段時(shí)間的測試過程,系統(tǒng)測試的過程會產(chǎn)生大量的無用數(shù)據(jù),垃圾數(shù)據(jù),在測試結(jié)束之后會再把這些數(shù)據(jù)刪掉,一般都是從數(shù)據(jù)庫直接就刪了,但是這個(gè)時(shí)候就會出一個(gè)不影響系統(tǒng)使用的問題,這個(gè)問題一般只對強(qiáng)迫癥患者有效,因?yàn)閯h除數(shù)據(jù)之后,新增的數(shù)據(jù)不再從1開始自增了,就很難受。那么如何解決這個(gè)問題呢。
MySQL中清空數(shù)據(jù)表的常用命令。通常有兩種方式:DELETE和TRUNCATE。記得DELETE FROM table會刪除所有行,但不會重置自增計(jì)數(shù)器,而TRUNCATE TABLE則會重置自增計(jì)數(shù)器到1。這可能是一個(gè)關(guān)鍵點(diǎn),用戶可能已經(jīng)知道DELETE但不知道TRUNCATE的效果差異。
第一種方法:TRUNCATE TABLE
特點(diǎn):
直接清空表并重置自增主鍵。
不可回滾(事務(wù)中執(zhí)行后無法通過 ROLLBACK 恢復(fù)數(shù)據(jù))。
高效(直接刪除表并重建結(jié)構(gòu),比 DELETE 更快)。
需要確保有足夠的權(quán)限(某些數(shù)據(jù)庫用戶可能沒有 TRUNCATE 權(quán)限)。
第二種方法:DELETE + ALTER TABLE
如果無法使用 TRUNCATE(例如權(quán)限不足或表有外鍵約束),可以用 DELETE 清空數(shù)據(jù)后手動(dòng)重置自增值: