間に違いがあるかどうか誰かに教えてもらえますか
DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]
MVC WebアプリケーションでJDBCテンプレートを使用しているため、これを求めています。私が使用した場合DROP [TABLE_NAME]
、エラーはテーブルが存在すると述べました。そして、私が使用するDROP IF EXISTS [TABLE_NAME]
と、それは悪いSQL文法を言います。誰か助けてもらえますか?
間に違いがあるかどうか誰かに教えてもらえますか
DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]
MVC WebアプリケーションでJDBCテンプレートを使用しているため、これを求めています。私が使用した場合DROP [TABLE_NAME]
、エラーはテーブルが存在すると述べました。そして、私が使用するDROP IF EXISTS [TABLE_NAME]
と、それは悪いSQL文法を言います。誰か助けてもらえますか?
標準のSQL構文は
DROP TABLE table_name;
IF EXISTS
標準ではありません。プラットフォームが異なれば、異なる構文でサポートされる場合と、まったくサポートされない場合があります。PostgreSQLでは、構文は次のとおりです。
DROP TABLE IF EXISTS table_name;
テーブルが存在しない場合、または他のデータベースオブジェクトがテーブルに依存している場合、最初のテーブルはエラーをスローします。ほとんどの場合、他のデータベースオブジェクトは外部キー参照ですが、他のオブジェクトもある場合があります。(たとえば、ビュー。)2番目のテーブルは、テーブルが存在しない場合はエラーをスローしませんが、他のデータベースオブジェクトがそれに依存している場合はエラーをスローします。
テーブル、およびテーブルに依存する他のすべてのオブジェクトを削除するには、これらのいずれかを使用します。
DROP TABLE table_name CASCADE;
DROP TABLE IF EXISTS table_name CASCADE;
CASCADEの使用には細心の注意を払ってください。
直接求められるものではありません。しかし、ドロップテーブルを適切に実行する方法を探していたときに、他の多くの人もそうしていると思うので、この質問に出くわしました。
SQL Server 2016以降では、次を使用できます
DROP TABLE IF EXISTS dbo.Table
SQL Server <2016の場合、永続テーブルに対して次のようにします。
IF OBJECT_ID('dbo.Table', 'U') IS NOT NULL
DROP TABLE dbo.Table;
またはこれ、一時的なテーブルの場合
IF OBJECT_ID('tempdb.dbo.#T', 'U') IS NOT NULL
DROP TABLE #T;
table
構文を忘れました :
drop table [table_name]
テーブルをドロップします。
使用する
drop table if exists [table_name]
テーブルを削除する前に、テーブルが存在するかどうかを確認します。
存在する場合は削除されます。
そうでない場合、エラーはスローされず、アクションは実行されません。
DROP TABLE IF EXISTS [table_name]
最初にテーブルが存在するかどうかをチェックし、存在する場合はテーブルを削除します。
DROP TABLE [table_name]
チェックせずに削除するため、存在しない場合はエラーで終了します
そのような名前のテーブルが存在しない場合、何もしないのにDROP
エラーで失敗しますDROP IF EXISTS
。
これは、スクリプトを使用してデータベースを作成/変更する場合に役立ちます。このように、テーブルの以前のバージョンが削除されていることを手動で確認する必要はありません。あなたはただそれをし、DROP IF EXISTS
それを忘れます。
もちろん、現在のDBエンジンはこのオプションをサポートしていない可能性があり、提供した情報でエラーについて詳しく知ることは困難です。