MySQL
[ MySQL ] Sequence(시퀀스) 사용하기
숑숑이~~
2021. 12. 1. 08:00
MySQL 정리내용 전체목록
시퀀스 테이블 생성하기
CREATE TABLE 스키마명.`tb_sequence` (
`seq_name` varchar(4) NOT NULL COMMENT '시퀀스에 사용될 명칭',
`seq_no` int NOT NULL COMMENT '시퀀스 no',
PRIMARY KEY (`seq_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='tb_sequence';
시퀀스를 사용하는 각 테이블별 시퀀스를 관리하게 구성한다.
seq_name에 테이블명을 저장한다.
시퀀스 함수 생성하기.
시퀀스 함수는 테이블명을 인자값으로 전달하면
sequence 테이블에서 해당 테이블의 sequence값을 가져온다.
DELIMITER ;;
CREATE FUNCTION 스키마명.`fn_get_seq`(`테이블명` VARCHAR(10))
RETURNS varchar(8) CHARSET utf8mb4
BEGIN
DECLARE RTN_VAL VARCHAR(8);
INSERT INTO 스키마명.tb_sequence (seq_name, seq_no)
values (p_seq_name, LAST_INSERT_ID(1))
ON DUPLICATE KEY UPDATE seq_no=LAST_INSERT_ID(seq_no+1);
set @ret = row_count();
if @ret = 0 then
set RTN_VAL = '0';
else
SET RTN_VAL = (SELECT CONCAT( LPAD(LAST_INSERT_ID(),4,'0') ));
end if;
RETURN RTN_VAL;
END ;;
DELIMITER ;
시퀀스 함수 사용하기.
fn_get_seq(`테이블명`)
insert문에 넣어서 사용하면 된다.
반응형