テーブルが作成済みかを判定する仕組みを調べたのでメモ
実行環境
- SQL Server 2014 Express
テーブル等の一覧を取得する
SQL Serverで作成されているオブジェクトは全て[DB名称].dbo.sysobjects
というシステムテーブルに保存される。
そのため、下記のようなSQLで内容を見ることができる
SELECT * FROM --[DB名称].dbo.sysobjects TEST.dbo.sysobjects
- オブジェクトの種類一部抜粋
xtype | オブジェクトの種類 |
---|---|
P | ストアド プロシージャ |
TF | テーブル関数 |
U | ユーザー テーブル |
V | ビュー |
上記に記載されている通り、それぞれのオブジェクトの種類もxtypeフィールドに格納されているので、 対象の一覧を取得することができる。
SELECT * FROM --[DB名称].dbo.sysobjects TEST.dbo.sysobjects WHERE --ストアド プロシージャ xtype = 'P' --テーブル関数 --xtype = 'TF' --ユーザテーブル --xtype = 'U' --ビュー --xtype = 'V'
作成済みテーブル等が存在するかを確認する
オブジェクトの種類と一緒に、オブジェクトの名称も同じテーブルに保存されているため、
下記ようなSQLで存在を確認することができる。
SELECT CASE WHEN COUNT(name) > 0 THEN 'True' ELSE 'False' END FROM --[DB名称].dbo.sysobjects TEST.dbo.sysobjects WHERE --ユーザテーブル xtype = 'U' --名称 AND name = 'Table_1'