web-dev-qa-db-ja.com

IF EXISTS演算子がサポートされていない場合、SQLiteの既存のテーブルを削除します

私のバージョンのSQLiteはIF EXISTS演算子をサポートしていません。エラーが表示されることなく、存在するテーブルと存在しないテーブルを削除するにはどうすればよいですか?

現在、ライブアプリケーションのバージョンを更新できないため、IF EXISTSをサポートするSQLiteバージョンを使用できません。

38
HyderA

公式ドキュメント は、IF EXISTSを使用するように指示しているため、アップグレードするのが最善の計画であると思われます。

できない場合は、テーブルが空であるかどうかにかかわらず、成功するテーブルで簡単な操作を実行できるかどうかを確認する必要があります。成功した場合、テーブルを削除する必要があります。失敗した場合、テーブルはすでに削除されています。試行する操作の種類の例は次のとおりです。

SELECT COUNT(*) FROM theTable;

これから発生する可能性のあるエラーを言語レベルでトラップする必要があることに注意してください。トランザクションでロット全体(プローブ、エラートラップ、ドロップテーブル)をラップすることもできます。もちろん、エラー処理を行う場合のもう1つのアプローチは、テーブルを削除してエラーを処理することです。

22
Donal Fellows

次を使用できます。

DROP TABLE IF EXISTS TABLE_NAME;
113
Amit Jatrana

これを使用してください。

DROP TABLE TABLE_NAME;
5
Ahmad affandi

クエリで何らかの方法でメタデータテーブルを使用して、テーブルが存在するかどうかを確認できます。

SELECT count(*) > 0 FROM sqlite_master where tbl_name = "<table_name>" and type="table"
3
Marcus