MSSQL
[MSSQL] 임시테이블 생성 여부 확인 및 제거
csmkong
2024. 6. 3. 17:55
SSMS에서 임시테이블을 사용하여 데이터를 확인하는 쿼리를 사용하다보면,
임시테이블을 제거(DROP)하고 다시 생성해서 사용해야하는 경우가 있다.
쿼리의 마지막 라인에 사용한 임시테이블을 제거(DROP)하는 방법으로 쿼리 작성도 가능하지만
실행 시 임시테이블이 있는지 확인하고 있다면 지우고 다시 생성하도록 하는 방법도 있다.
SELECT *
INTO #TEMP_TT
FROM (
SELECT 'A' AS T UNION ALL
SELECT 'B' AS T UNION ALL
SELECT 'C' AS T
) A
SELECT *
FROM #TEMP_TT
<임시테이블에 데이터를 입력하고 입력된 데이터를 확인하는 쿼리>
위 쿼리를 처음 실행하면 아래와 같이 정상적으로 실행된다.
위 쿼리를 다시한번 실행하면 아래와 같은 오류가 발생한다.
쿼리 상단에 아래와 같은 코드를 넣어주면, 쿼리 실행 시 임시테이블의 존재 여부를 확인하고
임시테이블이 있다면 제거 후 쿼리를 실행하게 된다.
* #이 2개 붙어있는 전역 임시테이블에 사용할 때는 다른 SESSION에서 사용되고 있을 수 있으니 주의해야한다.
IF OBJECT_ID('TEMPDB..#TEMP_TT') IS NOT NULL
BEGIN
DROP TABLE #TEMP_TT
PRINT 'DROP TABLE #TEMP_TT.'
END
ELSE
BEGIN
PRINT '#TEMP_TT IS NOT EXISTS.'
END
SELECT *
INTO #TEMP_TT
FROM (
SELECT 'A' AS T UNION ALL
SELECT 'B' AS T UNION ALL
SELECT 'C' AS T
) A
SELECT *
FROM #TEMP_TT
임시테이블이 있다면 제거 후 쿼리를 실행할 수 있도록 조건문 추가.
위 쿼리를 실행하면 아래와 같이 임시테이블 존재 여부에 따라 메시지가 표시되며, 정상 실행된다.