亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQLite重置主鍵字段

SQLite重置主鍵字段

一只萌萌小番薯 2019-08-26 14:46:04
SQLite重置主鍵字段我在SQLite中有幾個表,我試圖弄清楚如何重置自動遞增的數據庫字段。我讀到DELETE FROM tablename應刪除所有內容并將自動增量字段重置為0,但是當我這樣做時它只刪除數據。插入新記錄后,自動增量會在刪除之前從中斷處繼續。我的ident字段屬性如下:字段類型:integer字段標志:PRIMARY KEY,AUTOINCREMENT,UNIQUE我在SQLite Maestro中構建表并且我在SQLite Maestro中執行DELETE語句是否重要?任何幫助都會很棒。
查看完整描述

3 回答

?
收到一只叮咚

TA貢獻1821條經驗 獲得超5個贊

試試這個:

delete from your_table;    delete from sqlite_sequence where name='your_table';

SQLite自動增量

SQLite使用特殊SQLITE_SEQUENCE跟蹤表所擁有的最大ROWID 。SQLITE_SEQUENCE只要創建包含AUTOINCREMENT列的普通表,就會自動創建并初始化該 表??梢允褂闷胀ǖ腢PDATE,INSERT和DELETE語句修改SQLITE_SEQUENCE表的內容。但是對此表進行修改可能會擾亂AUTOINCREMENT密鑰生成算法。在進行此類更改之前,請確保您知道自己在做什么。


查看完整回答
反對 回復 2019-08-26
?
冉冉說

TA貢獻1877條經驗 獲得超1個贊

您可以在表中刪除的行之后按更新順序重置

UPDATE SQLITE_SEQUENCE SET SEQ=0 WHERE NAME='table_name';


查看完整回答
反對 回復 2019-08-26
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

如果您想通過內容提供商重置每個RowId,請嘗試此操作

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);}


查看完整回答
反對 回復 2019-08-26
  • 3 回答
  • 0 關注
  • 1506 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號