2011-02-15 189 views
2

我正在爲我的應用程序使用SQLite。當我在SQLite中使用truncate命令時,它給了我錯誤,如「語法錯誤在截斷附近」。需要SQLite數據庫幫助

任何人都可以幫助我解決這個問題或任何其他截斷除DELETE命令的其他選擇。

回答

1

爲什麼不刪除?
刪除與空WHERE子句應該是相當快,SQLite的,因爲它不做某事稱爲「截斷優化」,見

http://www.sqlite.org/lang_delete.html

+0

如果我使用了DELETE,我給了ID字段的自動增量,那麼ID將從最後一個數字繼續,並且我想從1開始編號。 – Dipen 2011-02-15 11:41:40

1

的SQLLite 刪除截斷優化DELETE FROM {table};(無WHERE條款)也有類似的行爲到SQL Server TRUNCATE TABLE {table};。見SQLLite documentation here

取整優化

當從DELETE語句省略WHERE和被刪除的表沒有觸發條件時,SQLite使用一個優化刪除整個表的內容,而無需訪問表中的每一行都是單獨的。這種「截斷」優化使刪除運行速度更快。在SQLite版本3.6.5(2008-11-12)之前,truncate優化還意味着sqlite3_changes()和sqlite3_total_changes()接口和count_changes編譯指示實際上不會返回已刪除行的數量。該問題已在版本3.6.5(2008-11-12)中得到修復。

通過使用SQLITE_OMIT_TRUNCATE_OPTIMIZATION編譯時開關重新編譯SQLite,可以永久禁用所有查詢的truncate優化。

1

SQLite DELETE FROM不等同於T-SQL TRUNCATE TABLE

SQLite DELETE FROM將不會重置標記爲autoincrement的字段中的索引。