Database PostgreSQL 데이타베이스에서 시컨스(Sequence)를 처리하는 방법.
페이지 정보
본문
안녕하세요. 엔지엠소프트웨어입니다. 오랬동안 프로젝트를 하면서 오라클을 사용하다보니 가끔 어처구니가 없는 실수를 하곤합니다. 오라클에서 데이타를 추가(Insert)할 때 시컨스를 만들고 자동으로 증가시키도록 하는데요. Postgres에서는 함수가 다릅니다. 참고로, MSSQL은 시컨스를 만들거나 하지 않습니다. 테이블 스키마에서 자동 증가를 사용할지 여부만 결정하면 됩니다. 이게 더 쉽긴하죠^^;
- Oracle: USER_COST_SEQ.NEXTVAL
- PostgreSQL: NEXTVAL('USER_COST_SEQ')
Postgres에서 시컨스를 생성하거나 삭제하려면 아래와 같이 사용합니다.
CREATE SEQUENCE USER_COST_SEQ;
DROP SEQUENCE USER_CONST_SEQ;
시컨스의 현재값과 다음값을 가져오는 쿼리입니다.
SELECT CURRVAL('USER_COST_SEQ');
SELECT NEXTVAL('USER_COST_SEQ');
보통은 시컨스를 만들어놓고 사용하면서 테스트하는데요. 프로덕션 환경에서 테스트가 끝나고 오픈할 때 시컨스를 초기화하고 싶을수도 있습니다.
SELECT SETVAL('USER_COST_SEQ', 1, TRUE); -- NEXTVAL('USER_COST_SEQ') = 2
SELECT SETVAL('USER_COST_SEQ', 1, FALSE); -- NEXTVAL('USER_COST_SEQ') = 1
SETVAL 함수는 해당 시컨스를 초기화 시켜줍니다. 3번째 인자에 TRUE를 설정하면 시컨스는 현재 1이 되고, 다음 2 시컨스는 2가 됩니다. FALSE로 설정하면 현재 1이되고, 이 값을 그대로 사용합니다. 일반적으로 쿼리를 작성할 때 CURRVAL을 확인해서 시컨스를 증가시키지는 않기 때문에 FALSE로 초기화합니다.
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
추천0 비추천0
- 이전글자바 - Long 값을 String으로 변환하는 방법. 23.03.14
- 다음글Java - String 을 Long으로 변환하는 방법. (캐스팅 - Casting) 23.03.14
댓글목록
등록된 댓글이 없습니다.