需要帮助SQLite数据库

时间:2011-02-15 11:28:56

标签: sqlite

我在我的应用程序中使用SQLite。当我在SQLite中使用truncate命令时,它给出了类似“语法错误接近截断”的错误。

任何人都可以帮我解决这个问题或除DELETE命令之外的任何其他截断方法。

4 个答案:

答案 0 :(得分:1)

为什么不删除?
带有空WHERE子句的DELETE应该在SQLite中相当快,因为​​它确实称为“截断优化”,参见

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

答案 1 :(得分: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 pragma实际上不会返回已删除行的数量。自版本3.6.5(2008-11-12)以来,该问题已得到修复。

     

通过使用SQLITE_OMIT_TRUNCATE_OPTIMIZATION编译时开关重新编译SQLite,可以为所有查询永久禁用truncate优化。

答案 2 :(得分:1)

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

SQLite DELETE FROM不会在标记为autoincrement的字段中重置索引。

答案 3 :(得分:0)

没有。

只使用没有任何参数的DELETE。

这是Drupal 7的数据库抽象层实现的方式:

http://api.drupal.org/api/drupal/includes--database--sqlite--query.inc/function/TruncateQuery_sqlite%3A%3A__toString/7