상세 컨텐츠

본문 제목

[MySQL] 함수(PROCEDURE) 및 loop 사용해 연속된 데이터 Insert 하기

Dev.Stroy/Web

by zNine 2021. 7. 26. 12:15

본문

728x90
반응형

웹 서비스 개발 중 서버의 사용가능한 port를 DB에서 관리하는 기능이 필요.

9000 ~ 9999까지 port number를 DB에 미리 넣고, 해당 port가 사용가능한지 여부를 표시해야한다.

 

shell script로 하나씩 해보려다 찾아보니 msyql에 procedure란 기능이 있고,

이를 통해 함수를 선언,

함수내에서 loop문을 작성하고,

이를 호출 할 수 있다.

 

DELIMITER $$를 사용하는 이유는,

함수내 각 문법의 끝을 나타내는 ";"를 넣어야하는데

DELIMITER를 $$로 설정하지 않을 경우 procedure내 ";"로 끝나는 문장에서 엔터를 칠 경우,

mysql query문 실행하라는 뜻으로 받아 들이기 때문에,

기본 msyql 명령문의 끝을 ";"로 사용했다면 이후부터는 "$$"으로 참고하라고 알려주는 것.

// $$를 사용해 sql 문의 끝을 나타내도록 설정
DELIMITER $$

// 기존 portInsert 함수가 있을 경우 삭제
DROP PROCEDURE IF EXISTS portInsert$$

// 함수 생성
CREATE PROCEDURE portInsert()
BEGIN
DECLARE i INT DEFAULT 9000;
WHILE i <= 9999 DO
INSERT INTO port_pool (port, is_available) VALUES (i, 1);
SET i = i + 1;
END WHILE;
END$$

// 함수 호출
CALL portInsert();
$$
728x90
반응형

관련글 더보기