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 (임시 테이블 다루기)
728x90
'Data Science > DB+SQL' 카테고리의 다른 글
[SQL] 연승 연패 구하는 SQL (0) | 2023.01.11 |
---|---|
[SQL]시계열데이터 분석 : 불연속적인 상태 변화값 분석 (0) | 2022.10.21 |
[mysql] Transaction isolation level (0) | 2022.09.01 |
[mysql] db backup & restore (0) | 2022.08.20 |
[MYSQL] Pivoting SELECT SQL ( Rows to Columns ) (0) | 2022.05.11 |
최근댓글