1. ホーム
  2. sql

[解決済み] drop if exists vs drop?

2022-03-10 12:49:04

質問

との違いがあるのか、どなたか教えてください。

DROP IF EXISTS [TABLE_NAME]

DROP [TABLE_NAME]

私はMVCウェブアプリケーションで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の使用には十分な注意が必要です。