오늘은 MariaDB를 테스트를 할 일이 생겼습니다. 그런데, 데이터를 삽입하려고 하니 한 번에 쉽게 넣을 수 있는 방법이 필요해서 Procedure를 이용해서 데이터를 삽입하고 테스트해 보았습니다.
Procedure를 이용한 데이터 삽입
MySQL에서 프로시저를 생성할 때는 `DELIMITER`를 사용하여 명령문의 끝을 표시해야 합니다. 이는 MySQL이 세미콜론(;)을 명령문의 끝으로 인식하기 때문입니다. 따라서 세미콜론이 포함된 프로시저를 생성할 때는 다른 구분자를 사용해야 합니다.
아래와 같은 구문을 통해서 mysql 또는 mariadb에 프로시저를 생성할 수 있습니다.
프로시저 생성 구문 예
DELIMITER //
CREATE PROCEDURE PROC1()
BEGIN
DECLARE i INT DEFAULT 1;
WHILE i <> 10000 DO
INSERT INTO T1 VALUES(i);
SET i = i + 1;
END WHILE;
END//
DELIMITER ;
프로시저 생성 결과
MariaDB [tpcc]> DELIMITER //
MariaDB [tpcc]> CREATE PROCEDURE PROC1()
-> BEGIN
-> DECLARE i INT DEFAULT 1;
-> WHILE i <> 10000 DO
-> INSERT INTO T1 VALUES(i);
-> SET i = i + 1;
-> END WHILE;
-> END//
Query OK, 0 rows affected (0.005 sec)
MariaDB [tpcc]> DELIMITER ;
MOD를 사용하여 프로시저 내에서 주기적으로 commit 하기
트랜잭션을 테스트하려고 몇 건 넣고 commit을 하는 프로시저를 만들려고 하는데, 찾아보니 MOD라는 함수를 이용해야합니다.
다음은 SQL 프로시저에서 변수 i를 나눈 나머지가 0일 때 COMMIT을 호출하는 코드 예제입니다:
BEGIN
DECLARE i INT;
-- i 변수에 값을 할당합니다.
SET i = 10;
-- i를 나눈 나머지가 0인지 확인합니다.
IF MOD(i, 2) = 0 THEN
-- COMMIT을 호출합니다.
COMMIT;
END IF;
END;
이 코드는 i의 값이 짝수일 때 COMMIT을 호출합니다. i의 값을 적절하게 설정하거나, MOD 함수의 두 번째 인자를 원하는 나눗셈 값으로 변경하여 사용할 수 있습니다. 이 코드는 MySQL에서 작동합니다. 다른 SQL 데이터베이스에서는 약간의 수정이 필요할 수 있습니다.
'IT' 카테고리의 다른 글
가정집 컴퓨터(PC) 도메인 연결하기 - 공유기 포트 포워딩 | netis wf2710 | 집에있는 노트북 서버 만들기 (0) | 2024.01.25 |
---|---|
Clean Code(클린 코드) | 로버트 C. 마틴 - 1. 깨끗한 코드 핵심 정리 리뷰 (0) | 2024.01.24 |
리눅스 IO 상태 모니터링 하기 - iostat 명령어 알아보기 (0) | 2024.01.24 |
티스토리 블로그를 구글 애널리틱스와 연결하는 방법 (0) | 2024.01.23 |
nginx에 신규 subdomain과 flask app 추가하기 (0) | 2024.01.23 |