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は存在しない
になります。
