[PostgreSQL] Sequence 함수 및 값 변경 (번역)

2022. 3. 25. 13:09·DataBase/PostgreSQL

 

 

 

nextval(regclass)

시퀀스의 다음 값을 리턴하는 함수로 thread-safe 하다.

👉🏻 여러 세션에서 이 함수를 동시에 실행하면 각각 다른 값을 갖게한다.

 

💡 nextval() 을 호출하면 가리키고 있던 시퀀스는 반환하고 곧바로 다음 시퀀스를 가리킨다.

 

ex) nextval(table_name_pkpk:regclass) 

=> 1000 // 리턴은 1000을 받아왔지만 이미 테이블은 다음 시퀀스로 '1001'을 가리키고 있다.

다른 세션에서 INSERT 쿼리 -> 1001 입력

 

regclass

regclass?
시퀀스의 Object ID (OID) 를 의미.

이게 왜 필요할까?

OID는 여러 시스템 테이블에 쓰이는 기본키다.

OID 는 자체적인 동작이 없다. 그저 의미있는 이름을 시스템 오브젝트로 변환해주는 키워드일 뿐이다.

보통 OID에는 모두 `alias` 를 지정하게 되있다.

1번째 쿼리가 2번째 쿼리보다 짧고 간결하다.

 

특정 시퀀스를 불러올 때 모두 `regclass` 키워드를 넣어 해당 시퀀스의 OID 값을 받아온다.

 

currval(regclass) 

현재 세션에서 가장 최근에 `nextval` 을 통해 받아온 시퀀스 값을 리턴한다.

=> `nextval` 호출 없이 바로 이 함수를 호출하면 에러가 발생한다.

이 함수는 session-local value 를 리턴하기 때문에 현재 세션에서 우선 nextval 호출이 선행되어야한다.

 

 

lastval()

현재 새션 내에서 가장 최근에 `nextval` 로 받아온 값. == currval 과 거의 동일.

파라미터에 시퀀스명이 없다. => 어떤 시퀀스든 가장 최근에 `nextval` 로 받아온 값을 리턴한다.

 

 

 

시퀀스값 수정 및 초기화

이미 생성된 `table_name_pkpk_seq` 시퀀스 값을 1000부터 시작하고 싶다고 해보자.

 

⚠️ 이것만 해서는 시퀀스 값 변경이 적용되지 않는다.

 

The optional clause `START WITH` start
 changes the recorded start value of the sequence. This has no effect on the 
current sequence value;
it simply sets the value that future ALTER SEQUENCE RESTART commands will use.

👉🏻 현재 시퀀스 값에는 아무런 영향을 주지 않으므로 `ALTER SEQUENCE RESTRT` 를 사용하라

 

 

🔗 Reference

 

9.17. Sequence Manipulation Functions

9.17. Sequence Manipulation Functions This section describes functions for operating on sequence objects, also called sequence generators or just sequences. Sequence …

www.postgresql.org

 

 

저작자표시 (새창열림)

'DataBase > PostgreSQL' 카테고리의 다른 글

[PostgreSQL] Transaction + Pool 사용시 주의  (0) 2022.04.04
[PostgreSQL] Function (feat. trigger)  (0) 2022.03.29
[PostgreSQL] Notify  (0) 2022.03.25
[PostgreSQL] Transaction 왜, 언제, 어떻게 동작하나?  (0) 2022.03.25
Description on DB Column  (0) 2022.03.18
'DataBase/PostgreSQL' 카테고리의 다른 글
  • [PostgreSQL] Function (feat. trigger)
  • [PostgreSQL] Notify
  • [PostgreSQL] Transaction 왜, 언제, 어떻게 동작하나?
  • Description on DB Column
M_Falcon
M_Falcon
  • M_Falcon
    Falcon
    M_Falcon
  • 전체
    오늘
    어제
    • 분류 전체보기 (429)
      • Web (16)
        • Nodejs (14)
        • Javascript (23)
        • FrontEnd (4)
      • DataBase (39)
        • Fundamental (1)
        • Redis (4)
        • PostgreSQL (10)
        • NoSQL (4)
        • MySQL (9)
        • MSSQL (3)
        • Error (4)
      • Algorithm (79)
        • Algorithm (문제풀이) (56)
        • Algorithm (이론) (23)
      • JVM (64)
        • Spring (13)
        • JPA (5)
        • Kotlin (13)
        • Java (23)
        • Error (7)
      • 기타 (68)
        • Kafka (3)
        • Kubernetes (3)
        • Docker (12)
        • git (19)
        • 잡동사니 (26)
      • 재테크 (11)
        • 세무 (4)
        • 투자 (3)
        • 보험 (0)
      • BlockChain (2)
        • BitCoin (0)
      • C (32)
        • C (10)
        • C++ (17)
        • Error (3)
      • Low Level (8)
        • OS (3)
        • 시스템 보안 (5)
      • 네트워크 (3)
      • LINUX (30)
        • Linux (26)
        • Error (4)
      • 저작권과 스마트폰의 이해 (0)
      • 생각 뭉치 (6)
      • 궁금증 (2)
      • Private (4)
        • 이직 경험 (0)
        • 꿈을 찾아서 (1)
      • Android (21)
        • OS (4)
  • 블로그 메뉴

    • 홈
    • WEB
    • 알고리즘
    • DataBase
    • Linux
    • Mobile
    • C
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    database
    kafka
    프로그래머스
    Git
    linux
    Kotlin
    JPA
    Programmers
    Spring
    PostgreSQL
    javascript
    알고리즘
    ubuntu
    C++
    java
    Bitcoin
    docker
    android
    백준
    algorithm
  • hELLO· Designed By정상우.v4.10.3
M_Falcon
[PostgreSQL] Sequence 함수 및 값 변경 (번역)
상단으로

티스토리툴바