2011-02-15 197 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的字段中的索引。