# 시퀀스를 생성할 테이블
CREATE TABLE SEQUENCES(
NAME VARCHAR(32),
CURRVAL BIGINT UNSIGNED
)ENGINE=InnoDB;
# 시퀀스를 생성하는 프로시저
CREATE PROCEDURE CREATE_SEQUENCE(IN the_name text)
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
DELETE FROM SEQUENCES WHERE name=the_name;
INSERT INTO SEQUENCES VALUES (the_name, 0);
END;
# NEXTVAL 함수 생성
CREATE FUNCTION NEXTVAL(the_name VARCHAR(32))
RETURNS BIGINT UNSIGNED
MODIFIES SQL DATA
DETERMINISTIC
BEGIN
DECLARE ret BIGINT UNSIGNED;
UPDATE SEQUENCES SET currval=currval+1 WHERE name=the_name;
SELECT CURRVAL INTO ret FROM SEQUENCES WHERE name=the_name limit 1;
RETURN ret;
END;
# 시퀀스명 입력 및 초기값 지정하기(초기값+1부터 보임)
INSERT INTO SEQUENCES
VALUES('SEQ_TEST', 0);
# -- nextval 값 가져오기(확인용)
SELECT NEXTVAL('SEQ_TEST') SEQ
FROM dual;