私は自分のアプリケーションにSQLiteを使用しています。 SQLiteでtruncateコマンドを使用すると、 "syntax truncateの構文エラー"のようなエラーが表示されます。SQLiteデータベースのヘルプが必要
誰も私がこの問題またはDELETEコマンドを除くTRUNCATEのいずれかの他の代替を解決するために助けることができます。
私は自分のアプリケーションにSQLiteを使用しています。 SQLiteでtruncateコマンドを使用すると、 "syntax truncateの構文エラー"のようなエラーが表示されます。SQLiteデータベースのヘルプが必要
誰も私がこの問題またはDELETEコマンドを除くTRUNCATEのいずれかの他の代替を解決するために助けることができます。
削除しないのはなぜ?
(無WHERE
句を使用して)SQLLite 削除切り捨ての最適化DELETE FROM {table};
は似ている
何もありません。
ただ、引数を指定せずにDELETEを使用。
これは、それがDrupalの7のデータベース抽象化レイヤによって実装されている方法です。
を参照してください、それがかなった「最適化を切り詰める」と呼ばれないため句はSQLiteの中ではかなり高速である必要がありますWHERE空とDELETE SQL Server TRUNCATE TABLE {table};
に動作します。 SQLLite documentation here
切り捨て最適化
WHEREは、DELETE文から省略され、テーブルが削除されて何のトリガを持っていない参照してください、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を再コンパイルすることにより、すべてのクエリのために無効にすることができます。
SQLite DELETE FROM
は、T-SQL TRUNCATE TABLE
と同等ではありません。
SQLite DELETE FROM
は、autoincrement
というフィールドのインデックスをリセットしません。
DELETEを使用するとIDフィールドの自動インクリメントが与えられ、IDは最後の番号から続き、IDは1から開始します。 – Dipen
sqlite_sequenceテーブルから関連する行を削除することによって自動インクリメントをリセットできます:名=「my_pk_column」、これは危険なことかもしれませんが、見sqlite_sequence http://www.sqlite.org/autoinc.html –
から削除私は、ポイントはあなたの助けに感謝です。 – Dipen