175

間に違いがあるかどうか誰かに教えてもらえますか

DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]

MVC WebアプリケーションでJDBCテンプレートを使用しているため、これを求めています。私が使用した場合DROP [TABLE_NAME]、エラーはテーブルが存在すると述べました。そして、私が使用するDROP IF EXISTS [TABLE_NAME]と、それは悪いSQL文法を言います。誰か助けてもらえますか?

4

5 に答える 5

316

標準の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の使用には細心の注意を払ってください。

于 2012-03-05T11:31:53.373 に答える
37

直接求められるものではありません。しかし、ドロップテーブルを適切に実行する方法を探していたときに、他の多くの人もそうしていると思うので、この質問に出くわしました。

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; 
于 2016-04-15T08:27:45.870 に答える
20

table構文を忘れました :

drop table [table_name]

テーブルをドロップします。

使用する

drop table if exists [table_name]

テーブルを削除する前に、テーブルが存在するかどうかを確認します。
存在する場合は削除されます。
そうでない場合、エラーはスローされず、アクションは実行されません。

于 2012-03-05T11:28:29.727 に答える
4
DROP TABLE IF EXISTS [table_name]

最初にテーブルが存在するかどうかをチェックし、存在する場合はテーブルを削除します。

DROP TABLE [table_name]

チェックせずに削除するため、存在しない場合はエラーで終了します

于 2012-03-05T11:31:03.207 に答える
3

そのような名前のテーブルが存在しない場合、何もしないのにDROPエラーで失敗しますDROP IF EXISTS

これは、スクリプトを使用してデータベースを作成/変更する場合に役立ちます。このように、テーブルの以前のバージョンが削除されていることを手動で確認する必要はありません。あなたはただそれをし、DROP IF EXISTSそれを忘れます。

もちろん、現在のDBエンジンはこのオプションをサポートしていない可能性があり、提供した情報でエラーについて詳しく知ることは困難です。

于 2012-03-05T11:29:30.503 に答える