DROP IF EXISTS と DROP? 質問する

DROP IF EXISTS と DROP? 質問する

誰か違いがあるか教えてください

DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]

MVC Web アプリケーションで JDBC テンプレートを使用しているため、この質問をしています。使用すると、DROP [TABLE_NAME]テーブルが存在するというエラーが表示されます。使用すると、DROP IF EXISTS [TABLE_NAME]SQL 文法が間違っているというメッセージが表示されます。誰か助けてくれませんか?

ベストアンサー1

標準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 は十分注意して使用してください。

おすすめ記事