2011-02-15 5 views
2

Я использую SQLite для своего приложения. когда я использовал команду truncate в SQLite, она дает мне ошибку, например, «синтаксис Ошибка около усечения».Нужна помощь для базы данных SQLite

Может ли кто-нибудь помочь мне решить эту проблему или любую другую альтернативу усечения, за исключением команды DELETE.

ответ

1

Почему не УДАЛИТЬ?
УДАЛЕНИЯ с пустым ИНЕКЕМ должно быть довольно быстро в SQLite, так как он STH называется «усечение оптимизации», см

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

+0

Я дал автоинкремент в поле Идентификатор, если я использовал DELETE, тогда id будет продолжен с последнего номера, и я хочу начать идентификатор с 1. – Dipen

+0

Вы можете сбросить автоинкремент, удалив соответствующую строку из таблицы sqlite_sequence : удалить из sqlite_sequence, где name = 'my_pk_column', но это может быть опасно, см. http://www.sqlite.org/autoinc.html –

+0

Я получил благодарность за вашу помощь. – Dipen

1

SQLLite Удаления Усечения ОптимизацияDELETE FROM {table}; (без WHERE п) имеет аналогичную поведение на SQL Server TRUNCATE TABLE {table};. См SQLLite documentation here

усечение Оптимизация

Когда WHERE опущено из ВЕЯТ и таблица удаляется не имеют триггеров, SQLite использует оптимизацию, чтобы стереть все содержимое таблицы без посещения каждая строка таблицы индивидуально. Эта оптимизация «усечения» делает процесс удаления намного быстрее. До SQLite версии 3.6.5 (2008-11-12) оптимизация truncate также означала, что интерфейсы sqlite3_changes() и sqlite3_total_changes() и прагма count_changes фактически не возвращают количество удаленных строк. Эта проблема была исправлена ​​с версии 3.6.5 (2008-11-12).

Оптимизация усечения может быть окончательно отключена для всех запросов путем перекомпиляции SQLite с помощью ключа компиляции SQLITE_OMIT_TRUNCATE_OPTIMIZATION.

1

SQLite DELETE FROM не соответствует T-SQL TRUNCATE TABLE.

SQLite DELETE FROM не будет сбросить индекс в поле с пометкой autoincrement.

Смежные вопросы