임시테이블 OBJECT_ID

2008.11.17 20:54 개발언어/SQL

OBJECT_ID 함수를 이용하여 해당 테이블이 존재하는지 여부를 검사할 때 다음과 같이 사용하게 됩니다.

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'MY_TABLE') AND type in (N'U'))
   -- 'MY_TABLE' 테이블이 존재함.

하지만, 임시 테이블의 존재 여부를 검사할 때는 그냥 위와 같이 하면 테이블을 100% 찾을 수 없다고 나옵니다.
임시 테이블은 TEMPDB에 생성되므로 그곳에서 테이블에 대한 OBJECT_ID를 얻어와야 합니다.

따라서 다음과 같이 코드를 수정해야만 합니다.

IF EXISTS (SELECT * FROM tempdb.sys.objects WHERE object_id = OBJECT_ID(N'TEMPDB..[#MY_TABLE]') AND type in (N'U'))
   -- '#MY_TABLE' 테이블이 존재함.

위와 같이 코드를 작성하면 '#MY_TABLE' 임시테이블의 존재 여부를 확인할 수 있습니다.

퍼왔다. 뷰와 달리 임시테이블을 삭제할때는 조금 다르더라 ~

신고