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