誰かに違いがあるかどうか教えてもらえますか
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は慎重に使用してください。
CASCADE
BEGIN
COMMIT
直接尋ねるものではありません。しかし、テーブルを適切に削除する方法を探していると、他の多くの人もそうしているように、私はこの質問に出くわしました。
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;
DROP TABLE IF EXISTS [table_name]
最初にテーブルが存在するかどうかをチェックし、存在する場合はテーブルを削除します
DROP TABLE [table_name]
チェックせずに削除するため、存在しない場合はエラーで終了します
そのような名前のテーブルが存在しDROP
ない場合、エラーで失敗します。DROP IF EXISTS
何もせずに。
これは、スクリプトを使用してデータベースを作成/変更する場合に役立ちます。この方法では、テーブルの以前のバージョンが削除されていることを手動で確認する必要はありません。あなたはただやるDROP IF EXISTS
それを忘れます。
もちろん、現在のDBエンジンはこのオプションをサポートしていない可能性があります。提供した情報でエラーの詳細を知ることは困難です。
drop some_table if exists;
、テーブルsome_table
が存在しない場合に警告をスローすることにも言及する価値があります。
DROP
オブジェクトのタイプ(TABLE
この場合)を指定する必要があります