SQL Serverは、オブジェクトが存在するかどうかを判断します(整理中...)

2249 ワード

1データベースが存在するかどうかを判断する
if exists (select * from sys.databases where name = '    ')
   drop database [    ]

2テーブルが存在するか否かを判断する
if exists (select * from sysobjects where id = object_id(N'[  ]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
   drop table [  ]

3ストレージ・プロシージャが存在するかどうかを判断する
if exists (select * from sysobjects where id = object_id(N'[     ]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
   drop procedure [     ]

4テンポラリ・テーブルが存在するか否かを判断する
if object_id('tempdb..#    ') is not null  
   drop table #     

5ビューが存在するかどうかを判断する
--SQL Server 2000
IF EXISTS (SELECT * FROM sysviews WHERE object_id = '[dbo].[   ]'
--SQL Server 2005
IF EXISTS (SELECT * FROM sys.views WHERE object_id = '[dbo].[   ]'

6関数が存在するか否かを判断する
--                  
  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[   ]') and xtype in (N'FN', N'IF', N'TF'))  
  drop function [dbo].[   ]   

7ユーザが作成したオブジェクト情報の取得
SELECT [name],[id],crdate FROM sysobjects where xtype='U'

/*
xtype        ,        
C = CHECK   
D =      DEFAULT   
F = FOREIGN KEY   
L =   
FN =     
IF =      
P =     
PK = PRIMARY KEY   (    K)
RF =         
S =    
TF =    
TR =    
U =    
UQ = UNIQUE   (    K)
V =   
X =       
*/

8列が存在するか否かを判断する
if exists(select * from syscolumns where id=object_id('  ') and name='  ')
   alter table    drop column   

9列が自増列であるか否かを判断する
if columnproperty(object_id('table'),'col','IsIdentity')=1
   print '   '
else
   print '     '

SELECT * FROM sys.columns WHERE object_id=OBJECT_ID('  ')
AND is_identity=1

10テーブルにインデックスがあるかどうかを判断する
if exists(select * from sysindexes where id=object_id('  ') and name='   ')  
  print   '  '  
else  
  print   '   

11データベース内のオブジェクトの表示
SELECT * FROM sys.sysobjects WHERE name='   '