誰か違いがあるか教えてください
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 は十分注意して使用してください。