- 현재 시퀀스 번호를 반환하는 방법들에 대해 알아봅니다. 1. SELECT last_value FROM [시퀀스 명];
- 시퀀스 명을 기반으로 last_value 값을 조회하여 시퀀스의 마지막 값을 반환받습니다.
2. SELECT MAX(user_sq) FROM [테이블 명];
- 테이블 내에 시퀀스가 되는 컬럼의 최대값을 조회하여 시퀀스의 마지막 값을 반환받습니다.
3. SELECT CURRVAL('[시퀀스 명]'); - 시퀀스 명을 기반으로 현재 시퀀스의 값을 조회합니다. - 단, 해당 함수의 경우는 NEXTVAL()을 수행한 이후에 해당 조회가 된다는 점이 있습니다.
-- 1. format: 시퀀스 마지막 값(현재 시퀀스 값) 조회SELECT last_value FROM [시퀀스 명];
-- 1. 예시 : 시퀀스 마지막 값(현재 시퀀스 값) 조회SELECT last_value FROM tb_user_user_sq_seq;
-- 2. format : 시퀀스 마지막 값(현재 시퀀스 값) 조회 SELECTMAX([시퀀스의 테이블 컬럼 명]) FROM [테이블 명];
-- 2. 예시: 시퀀스 마지막 값(현재 시퀀스 값) 조회 SELECTMAX(user_sq) FROM tb_user;
-- 3. format: 현재 시퀀스 값 조회(* 해당 값은 NEXTVAL() 함수를 수행 한 이후에 수행이 됩니다)SELECT CURRVAL('[시퀀스 명]');
-- 3. 예시: 현재 시퀀스 값 조회(* 해당 값은 NEXTVAL() 함수를 수행 한 이후에 수행이 됩니다)SELECT CURRVAL('tb_user_user_sq_seq');
💡 현재 시퀀스 반환(조회) 예시
- 위에서 사전에 시퀀스가 2로 지정이 되어 있기에 현재 시퀀스 역시 2의 값으로 반환해 줍니다.
- 위와 같이 DuplicateKeyException과 같은 오류가 발생하였을 때, 마지막 시퀀스로 이어지기 위해 이를 변경합니다.
1. ALTER SEQUENCE tb_user_user_sq_seq RESTART WITH 3;
- 사전에 마지막 시퀀스 번호를 조회하고 마지막 번호에 + 1을 하여서 다음 번호로 지정하여 변경합니다.
2. SELECT SETVAL('[시퀀스 명]', [마지막 시퀀스 번호]) - 사전에 마지막 시퀀스 번호를 조회하고 마지막 번호에 + 1을 하여서 다음 번호로 지정하여 변경합니다.
-- [CASE1] -- 1. 변경 이전 마지막 시퀀스 조회 SELECT last_value FROM tb_user_user_sq_seq;
-- 1.2. 조회값을 기반으로 마지막 시퀀스로 변경ALTER SEQUENCE tb_user_user_sq_seq RESTART WITH3;
-- [CASE2] -- 1. 변경 이전 마지막 시퀀스 조회 SELECT last_value FROM tb_user_user_sq_seq;
-- 2. format : 시퀀스 마지막 번호 변경SELECT SETVAL('[시퀀스 명]', [마지막 시퀀스 번호])
-- 2. 예시 : 시퀀스 마지막 번호 변경SELECT SETVAL('tb_user_user_sq_seq', 3)