반응형
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' 임시테이블의 존재 여부를 확인할 수 있습니다.
퍼왔다. 뷰와 달리 임시테이블을 삭제할때는 조금 다르더라 ~