清空SQLite表后,如何使表的自增ID值也歸零
問題描述:sqlite3在清空table后能耻,如果table中有自增ID值合砂,那么這個值是不會歸零的,而且會繼續(xù)呈現(xiàn)遞增锯七。例如:對于表A链快,若給表設(shè)置ID(主鍵)為自增,那么如果之前在表中插入10條記錄眉尸,那么在清空表A后域蜗,再次插入記錄是ID的值并不是從零開始,而是繼續(xù)從11開始噪猾。
產(chǎn)生原因:sqlite_sequence表(自動創(chuàng)建)
sqlite_sequence表也被稱為系統(tǒng)表霉祸,用來保存其他表的RowID的最大值。sqlite_sequence表是在SQLite3創(chuàng)建表時自動創(chuàng)建的袱蜡,該表包含兩列丝蹭,第一列為neme,用來存儲表明。第二列為seq,用來保存對應(yīng)表的RowID的最大值坪蚁。當(dāng)記錄被插入表時奔穿,該表會自動更新。如果想把某個表的自增列序號歸零敏晤,則需要修改sqlite_sequence表的對應(yīng)記錄贱田。
解決辦法:
1、刪除表茵典,然后重新創(chuàng)建新表(不推薦)湘换。
2、修改sqlite_sequence中對應(yīng)表的自增列的值统阿。
DELETE FROM 'TABLENAME';
UPDATE sqlite_sequence SET seq=0 WHERE name = 'TABLENAME';
3、直接刪除對應(yīng)的記錄筹我。
DELETE FROM 'TableName';
DELETE FROM sqlite_sequence WHERE name='TableName';
4扶平、若想將所有的表的自增列都?xì)w零,則直接刪除該表
DELETE FROM sqlite_sequence;
參考:
https://www.cnblogs.com/top5/p/3385912.html
http://www.reibang.com/p/80d510e32c84
https://charlescui.iteye.com/blog/351001