2011-02-15 6 views
2

내 응용 프로그램에 SQLite를 사용하고 있습니다. SQLite에서 truncate 명령을 사용했을 때 "구문 오류 근처에"과 같은 오류가 발생했습니다.SQLite 데이터베이스에 대한 도움이 필요합니다.

누구든지 내가이 문제를 해결하거나 DELETE 명령을 제외한 다른 방법을 잘라낼 수 있습니다.

답변

1

왜 삭제하지?
는이 STH "최적화를 잘라"라는 않기 때문에 절은 꽤 빨리 SQLite는에 있어야 할 곳에 빈과 삭제를 참조

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

+0

DELETE를 사용하면 ID 필드에 자동 증가가 부여되고 ID는 마지막 번호에서 계속되며 1부터 ID를 시작하려고합니다. – Dipen

+0

sqlite_sequence 테이블에서 관련 행을 삭제하여 자동 증가분을 재설정 할 수 있습니다 : name = 'my_pk_column'인 sqlite_sequence에서 삭제하십시오. 그러나 이것은 위험 할 수 있습니다. http://www.sqlite.org/autoinc.html을 참조하십시오. –

+0

도와 주셔서 감사드립니다. – Dipen

1

SQLLite 삭제 잘라 내기 최적화 (아무 WHERE 절)DELETE FROM {table}; 유사한있다 동작을 SQL Server TRUNCATE TABLE {table};으로 보냅니다. 참조 SQLLite documentation here

자르는 최적화를 Where는 DELETE 문에서 생략 삭제되는 테이블에는 트리거가 없습니다

, SQLite는 방문하지 않고도 전체 테이블의 내용을 삭제하는 최적화를 사용하여 테이블의 각 행을 개별적으로. 이 "truncate"최적화는 삭제 실행을 훨씬 빠르게합니다. 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 최적화가 영구적으로 비활성화 될 수 있습니다.

1

SQLite DELETE FROM은 T-SQL TRUNCATE TABLE과 동일하지 않습니다.

SQLite DELETE FROMautoincrement이라고 표시된 필드의 인덱스를 다시 설정하지 않습니다.

관련 문제