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




