본문 바로가기
[ DataBase ]/DB etc.

[MSSQL]OBJECT_ID 함수를 이용한 개체 존재 여부 확인

by 관이119 2014. 1. 22.

 

출처 - http://lovedb.tistory.com/58
출처 - http://kmj1107.tistory.com/136

 

OBJECT_ID 함수를 이용해서 개체의 존재 여부를 확인 후 개체를 삭제해 보자.

 

오라클의 경우 CREATE OR REPLACE 를 사용하면 CREATE 할 때 기존에 같은 이름의 개체가 있으면 

REPLACE 하고 개체가 없으면 CREATE 하는 기능이 있지만 MS SQL Server 에는 없다.

 

테이블에 개체 ID가 있는지 확인해서 지정한 테이블이 있는지 확인한다.

테이블이 있는 경우 삭제되고, 테이블이 없는 경우 DROP TABLE 문이 실행되지 않는다.

 

 USE AdventureWorks2008R2;

 GO

 IF OBJECT_ID (N'dbo.AWBuildVersion', N'U') IS NOT NULL

 DROP TABLE dbo.AWBuildVersion;

 GO 

 

 

OBJECT_ID 함수 내의 dbo.AWBuildVersion은 사용할 개체를 의미하고,

U는 스키마 범위 개체 형식을 의미한다.

 

U는 테이블(사용자 정의)를 의미한다.

 

개체 유형:

AF = 집계 함수(CLR)

C = CHECK 제약 조건

D = DEFAULT(제약 조건 또는 독립 실행형)

F = FOREIGN KEY 제약 조건

FN = SQL 스칼라 함수

FS = 어셈블리(CLR) 스칼라 함수

FT = 어셈블리(CLR) 테이블 반환 함수

IF = SQL 인라인 테이블 반환 함수

IT = 내부 테이블

P = SQL 저장 프로시저

PC = 어셈블리(CLR) 저장 프로시저

PG = 계획 지침

PK = PRIMARY KEY 제약 조건

R = 규칙(이전 스타일, 독립 실행형)

RF = 복제 필터 프로시저

S = 시스템 기본 테이블

SN = 동의어

SO = 시퀀스 개체

SQ = 서비스 큐

TA = 어셈블리(CLR) DML 트리거

TF = SQL 테이블 반환 함수

TR = SQL DML 트리거

TT = 테이블 유형

U = 테이블(사용자 정의)

UQ = UNIQUE 제약 조건

V = 뷰

X = 확장 저장 프로시저

 

 

 


요새 쿼리에서 임시테이블을 자주 사용하게 됩니다.

그런데 쿼리를 짜다가 여러번 테스트를 하다보면 임시테이블(#temp)이 이미 존재한다고 예외가 발생 합니다.

매번 Drop table 를 이용하여  (Drop table #temp) 매번 번거롭게 지웠지만 

OBJECT_ID 라는게 있더라구요.

방법은 간단합니다.



 

 OBJECT_ID 를 이용한 임시테이블 존재여부 확인 & 삭제

 

       IF OBJECT_ID('tempdb..#임시테이블') IS NOT NULL -- 임시테이블이 있을 경우

       DROP TABLE #임시테이블                          -- 임시테이블 삭제

 



예를 들면

임시테이블 명 : #temp


예제) OBJECT_ID 를 이용한 임시테이블 존재여부 확인 & 삭제 

 

       IF OBJECT_ID('tempdb..#Temp') IS NOT NULL

       DROP TABLE #Temp

 


 


'[ DataBase ] > DB etc.' 카테고리의 다른 글

mssql 에서 char  (0) 2014.05.26
nvarchar(max)  (0) 2014.02.07
RAISERROR 예제 및 .NET에서 사용하기  (0) 2014.01.21
ERWin을 이용해서 mysql 데이터베이스의 ERD 뽑기  (0) 2012.09.12
ERWin 사용 방법  (0) 2012.09.12

댓글