728x90

MySQL은 임시 테이블이 존재하는지 확인하는 함수나 문장을 제공하지 않아 Stored Procedure를 만들었다
이 프로시저의 원리는 PREPARE 문을 통해서 select 1 from temp_table 구문을 실행하여 에러 발생여부를 체크하는 방식으로 임시 테이블 존재여부를 체크한다. 

DELIMITER //
CREATE PROCEDURE check_table_exists(table_name VARCHAR(100)) 
BEGIN
    DECLARE CONTINUE HANDLER FOR SQLSTATE '42S02' SET @err = 1;
    SET @err = 0;
    SET @table_name = table_name;
    SET @sql_query = CONCAT('SELECT 1 FROM ',@table_name);
    PREPARE stmt1 FROM @sql_query;
    IF (@err = 1) THEN
        SET @table_exists = 0;
    ELSE
        SET @table_exists = 1;
        DEALLOCATE PREPARE stmt1;
    END IF;
END //
DELIMITER ;

임시 테이블이 존재하면 @table_exists 값이 1, 그렇지 않으면 0으로 설정된다. 

 

check_table_exists 프로시저를 통해서 'tbl_test'라는 임시 테이블 존재여부를 확인한다.

CALL check_table_exists('tbl_test');
SELECT @table_exists;

 

 

<관련 포스팅>

[MYSQL] Temporary Table Control (임시 테이블 다루기)

 

[MYSQL] Temporary Table Control (임시 테이블 다루기)

Mysql Temporary Table 개요. MySQL에서 임시테이블(Temporary table)은 단일 세션에서 여러 번 재사용할 수 있는 임시 결과 세트를 저장할 수 있는 특수한 유형의 테이블입니다. 임시 테이블은 반복적인 SELEC

dadev.tistory.com

 


 

 

728x90
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
반응형