SQLServer テーブルが存在していたらdropしてcreateする方法

更新:2018.6.7

目次

2016以降のバージョン

SQLServerのバージョンが2016以降の場合は、1行で書くことが出来ます。

DROP TABLE IF EXISTS テーブル名

テーブル名の部分に、存在していたら削除したいテーブルを指定することで実現できます。

テーブル名はスキーマ.テーブル名と指定することも可能です。

2016よりも前のバージョン

SQLServerのバージョンが2016よりも前のバージョンを使用している場合は、DROP TABLE IF EXISTS テーブル名が使用できませんので、少しコードが長くなってしまいます。

IF OBJECT_ID(N'テーブル名', N'U') IS NOT NULL
drop table テーブル名

OBJECT_ID()関数を使用して、「テーブル名」が存在するかチェックしています。

テーブル名はスキーマ.テーブル名と指定することも可能です。

一時テーブルも同じように

SQLServerManagementStudioを使用して、一時テーブルを作成してから処理を行うようなコードを書いているときに、すでにテーブルが存在していてエラーになることがあります。

今回紹介している方法を利用することで、回避できます。

IF OBJECT_ID(N'#worktable', N'U') IS NOT NULL
drop table #worktable

create table #worktable(
    sales integer
)

一時テーブルの場合は通常のテーブルと同じように存在するかをチェクしてdropすることが出来ます。

ストアドプロシージャとして作成して実行している場合には、実行後に一時テーブルが削除されますが、SQLServerManagementStudioを使用してコードを書いているときは、ウィンドウを閉じるまで一時テーブルは残り続けますので、こういった対応が必要になります。

ストアドプロシージャにしてしまった後は、一時テーブルの存在チェック処理は必要ありませんので、コメントアウトするか削除してしまっても構いません。

残していても、特に問題はないので、将来的にデバッグする可能性ある場合は残しておいたほうが便利かもしれません。

SQLServer関連記事











これからブログなどのサイトを作りたいと思っている人は、お名前.comでのドメイン取得がオススメです。

■□━━ 急げ、ドメインは早い者勝ち! ━━□■
     ■お名前.com

アマゾンの2019年本屋大賞一覧

そして、バトンは渡された
ひと
ベルリンは晴れているか
熱帯
ある男

楽天市場のおすすめ商品一覧

お金2.0 新しい経済のルールと生き方 [ 佐藤航陽 ]
全部レンチン!やせるおかず 作りおき 時短、手間なし、失敗なし
「読む力」と「地頭力」がいっきに身につく 東大読書 [ 西岡 壱誠 ]