SQLite 清空表資料

來源:互聯網
上載者:User

標籤:

SQLite並不支援TRUNCATE TABLE語句

方式一:

DELETE FROM [Tab_User] --不能將遞增數歸零

 

方式二:

DELETE FROM sqlite_sequence WHERE name = ‘TableName’; --可以將遞增數歸零

 

詳細看我從其他博友園子裡扒來的介紹:

SQL標準中有TRUNCATE TABLE語句,用來清空表的所有內容。但SQLite不支援這個語句。在SQLite中直接使用“DELETE FROM TableName”就可以了。對於大多數DBMS來說,用DELETE不如用TRUNCATE 速度快,因為TRUNCATE 不用訪問整個表,不用記錄資料的變動。

SQLite雖然不支援TRUNCATE,但它對DELETE做了最佳化:“When the WHERE is omitted(略去) from a DELETE statement and the table being deleted has no triggers(觸發器), SQLite uses an optimization(最佳化) to erase the entire table content without having to visit each row of the table individually. This “truncate” optimization makes the delete run much faster.”

通常在清空表的時候,還需要把自增列歸零。在SQLite中定義自增列的方法如下:

CREATE TABLE TableName ( id INTEGER PRIMARY KEY AUTOINCREMENT, … );

當SQLite資料庫中包含自增列時,會自動建立一個名為 sqlite_sequence 的表。這個表包含兩個列:name和seq。name記錄自增列所在的表,seq記錄當前序號(下一條記錄的編號就是當前序號加1)。如果想把某個自增列的序號歸零,只需要修改 sqlite_sequence表就可以了。

UPDATE sqlite_sequence SET seq = 0 WHERE name = ‘TableName’;

也可以直接把該記錄刪掉:

DELETE FROM sqlite_sequence WHERE name = ‘TableName’;

要想將所有表的自增列都歸零,直接清空sqlite_sequence表就可以了:

DELETE FROM sqlite_sequence;

 

在FMDB中這樣使用

[db executeUpdate:@"DELETE FROM coupon"];

 [db executeUpdate:@"UPDATE sqlite_sequence set seq=0 where name=‘coupon‘"];

SQLite 清空表資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.