Dev.Stroy/Web
[MySQL] 함수(PROCEDURE) 및 loop 사용해 연속된 데이터 Insert 하기
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
반응형