SQLServerでテーブルの存在を確認する

プログラミング SQL Server

SQLServerでは「dbo.sysobjects」から「id」を検索することにより、そのテーブルが存在するかどうか確認することができます。

スポンサーリンク

データベース内のテーブル情報をから存在を確認する

プログラムで動的にテーブルを作成したりする場合に、そのテーブルが存在するかどうか確認したいときがあります。

SQLServerでは「dbo.sysobjects」から「id」を検索することにより、そのテーブルが存在するかどうか確認することができます。

具体的には「dbo.sysobjects」を確認したいテーブル名で、そのオブジェクトがユーザーテーブル型かどうかチェックします。
(idの件数をCOUNTすることで存在しない場合もSELECTの結果が返ってくるようにしてあります。)

SQLServerで指定されたテーブルが存在するかどうかSQLで確認します。

テーブルの存在を確認するSQL

------------------------
--テーブル作成
------------------------
CREATE TABLE test_table ( name varchar(20) )

------------------------
--存在のチェック(1)
------------------------
SELECT
    'test_tableは' + CASE WHEN COUNT(id) = 0 THEN '存在しない' ELSE '存在する' END AS チェック結果
FROM
    dbo.sysobjects
WHERE
         id = object_id( 'test_table' )
    AND OBJECTPROPERTY( id, N'IsUserTable' ) = 1

------------------------
--テーブル作成
------------------------
DROP TABLE test_table

------------------------
--存在のチェック(2)
------------------------
SELECT
    'test_tableは' + CASE WHEN COUNT(id) = 0 THEN '存在しない' ELSE '存在する' END AS チェック結果
FROM
    dbo.sysobjects
WHERE
         id = object_id( 'test_table' )
    AND OBJECTPROPERTY( id, N'IsUserTable' ) = 1

存在のチェック(1)では作成した後なので

test_tableは存在する

に、存在のチェック(2)では削除した後なので

test_tableは存在しない

になります。

タイトルとURLをコピーしました