2012年5月21日月曜日

(SQL Server)テーブル存在チェック

テーブルの存在チェックです。OBJECT_ID という、メタデータ関数を使用します。

テーブルが存在すれば OBJECT ID を返し、存在しなければ NULL を返します。一部を除いてテーブル以外のオブジェクトも指定できます。
SELECT OBJECT_ID('データベース.スキーマ.テーブル')

カウントで存在チェックしてみたり
SELECT COUNT(*) FROM sys.objects WHERE object_id = OBJECT_ID('dbo.Table')

SQL Server 2000 なら
SELECT COUNT(*) FROM dbo.sysobjects WHERE id = OBJECT_ID('dbo.Table')
dbo.sysobjects は SQL Server 2005 以降でも使用できますが、将来のバージョンで削除される予定です。SQL Server 2005 以降を使っているなら、システムカタログビューの sys.objects 推奨です。詳しくは MSDN の SQL Server 『互換性ビュー』を参照してください。

■環境
OS:Microsoft Windows XP Home Edition 日本語 ServicePack 3
DB:Microsoft SQL Server 2005 Express Edition Service Pack 4 (9.00.5000.00)
DB管理ツール:Microsoft SQL Server Management Studio Express (9.00.3042.00)