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문에 넣어서 사용하면 된다. 

 

 

 

 

 

 

 

 

 

 

반응형