2017. 12. 4. 08:36ㆍ공유
CREATE TABLE sequence (
sequence_name varchar(100) NOT NULL, -- 시퀀스 이름
sequence_increment int(11) unsigned NOT NULL DEFAULT 1, -- 시퀀스 증가 값에 사용한다.
sequence_min_value int(11) unsigned NOT NULL DEFAULT 1, -- 시퀀스의 최소 값
sequence_max_value bigint(20) unsigned NOT NULL DEFAULT 18446744073709551615, -- 시퀀스의 최대 값
sequence_cur_value bigint(20) unsigned DEFAULT 1, -- 시퀀스의 현재 값
sequence_cycle boolean NOT NULL DEFAULT FALSE, -- 시퀀스가 맥스 값을 초과 하였을때 다시 시작했는지 여부
PRIMARY KEY (sequence_name)
);
INSERT INTO sequence (sequence_name, sequence_cur_value) VALUES('sq_name', 1000);
CREATE FUNCTION nextval (seq_name varchar(100))
RETURNS bigint(20) NOT DETERMINISTIC
BEGIN
DECLARE cur_val bigint(20);
SELECT
sequence_cur_value INTO cur_val
FROM
sequence
WHERE
sequence_name = seq_name
;
IF cur_val IS NOT NULL THEN
UPDATE
sequence
SET
sequence_cur_value = IF (
(sequence_cur_value + sequence_increment) > sequence_max_value,
IF (
sequence_cycle = TRUE,
sequence_min_value,
NULL
),
sequence_cur_value + sequence_increment
)
WHERE
sequence_name = seq_name
;
END IF;
RETURN cur_val;
END;
SELECT nextval('sequence_name')
'공유' 카테고리의 다른 글
코로나19 특고 프리랜서 고용안정지원금 (0) | 2020.11.06 |
---|---|
2차 재난지원금 신청방법 지원대상 (0) | 2020.11.06 |
일출 일몰 시간 방향 지도 (1) | 2020.11.06 |
mysql split string to multiple row (0) | 2020.11.06 |
JBoss multiple instance (0) | 2018.08.21 |