「DROP TABLE IF EXISTS テーブル名」という簡易な記述で、
「テーブルが存在している場合、テーブルを削除する」
ことができます!
この簡易な記述方法は、2016バージョンから
提供されました!
2016バージョン以前はIF文とOBJECT_ID関数を組み合わせて、
同様のことを実現していました!
準備
以下のSQLを実行し、テーブルの作成をします。
--テーブルの作成
CREATE TABLE sampleTable
(
id CHAR(3) PRIMARY KEY,
)
SELECT * FROM sampleTable
SQL
ここでは例として、
・上記で作成したテーブル「sampleTable」が
・存在する場合は削除
します。
--テーブル「sampleTable」が存在する場合は削除
DROP TABLE IF EXISTS sampleTable
実行結果
当該テーブルが削除されていること(存在しないこと)を確認します。
--当該テーブルが削除されていること(存在しないこと)を確認
SELECT * FROM sampleTable
当該テーブルが存在しない場合は、何も行われずに正常終了します。
※つまりエラーは発生しません。
「DROP PROCEDURE IF EXISTS プロシージャ名」等とすれば、
プロシージャ等でも同様のことができます!
「IF EXISTS」はテーブルやプロシージャだけでなく
・全てのDROP文で使用可能
です!