一只萌萌小番薯
2019-08-26 14:46:04
SQLite重置主鍵字段我在SQLite中有幾個(gè)表,我試圖弄清楚如何重置自動(dòng)遞增的數(shù)據(jù)庫(kù)字段。我讀到DELETE FROM tablename應(yīng)刪除所有內(nèi)容并將自動(dòng)增量字段重置為0,但是當(dāng)我這樣做時(shí)它只刪除數(shù)據(jù)。插入新記錄后,自動(dòng)增量會(huì)在刪除之前從中斷處繼續(xù)。我的ident字段屬性如下:字段類型:integer字段標(biāo)志:PRIMARY KEY,AUTOINCREMENT,UNIQUE我在SQLite Maestro中構(gòu)建表并且我在SQLite Maestro中執(zhí)行DELETE語(yǔ)句是否重要?任何幫助都會(huì)很棒。
3 回答

收到一只叮咚
TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
試試這個(gè):
delete from your_table; delete from sqlite_sequence where name='your_table';
SQLite使用特殊
SQLITE_SEQUENCE
表跟蹤表所擁有的最大ROWID 。SQLITE_SEQUENCE
只要?jiǎng)?chuàng)建包含AUTOINCREMENT列的普通表,就會(huì)自動(dòng)創(chuàng)建并初始化該 表。可以使用普通的UPDATE,INSERT和DELETE語(yǔ)句修改SQLITE_SEQUENCE表的內(nèi)容。但是對(duì)此表進(jìn)行修改可能會(huì)擾亂AUTOINCREMENT密鑰生成算法。在進(jìn)行此類更改之前,請(qǐng)確保您知道自己在做什么。

冉冉說(shuō)
TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超1個(gè)贊
您可以在表中刪除的行之后按更新順序重置
UPDATE SQLITE_SEQUENCE SET SEQ=0 WHERE NAME='table_name';

瀟瀟雨雨
TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果您想通過(guò)內(nèi)容提供商重置每個(gè)RowId,請(qǐng)嘗試此操作
rowCounter=1;do { rowId = cursor.getInt(0); ContentValues values; values = new ContentValues(); values.put(Table_Health.COLUMN_ID, rowCounter); updateData2DB(context, values, rowId); rowCounter++; while (cursor.moveToNext());public static void updateData2DB(Context context, ContentValues values, int rowId) { Uri uri; uri = Uri.parseContentProvider.CONTENT_URI_HEALTH + "/" + rowId); context.getContentResolver().update(uri, values, null, null);}
添加回答
舉報(bào)
0/150
提交
取消