NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 학습
  • 매뉴얼

    학습


    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로 초기화합니다.

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    댓글목록

    등록된 댓글이 없습니다.