개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.09 21:24

pg_last_oid 함수에 대한 이해가 필요합니다.

목록
  • 제로데이헌터 9일 전 2025.06.09 21:24
  • 50
    1
저는 pg_last_oid 함수를 사용하여 마지막으로 삽입된 OID 값을 얻으려고 합니다.
OID는 PostgreSQL에서 객체 식별자로 사용되는데,
그런데 OID는 항상 증가하는 것은 아니라는 것을 알게되었습니다.

OID가 증가하지 않는 경우는 어떤 상황일까요?
그리고 OID가 증가하지 않는 이유는 무엇일까요?

    댓글목록

    profile_image
    나우호스팅  9일 전



    OID는 PostgreSQL에서 객체 식별자로 사용되며, 일반적으로 객체가 생성될 때 증가하는 식별자입니다. 그러나 OID가 증가하지 않는 경우는 다음과 같습니다.

    1. OID가 삭제된 경우: OID가 삭제된 경우, 해당 OID는 다시 할당되지 않으며, OID가 증가하지 않습니다. 예를 들어, 다음과 같은 쿼리를 실행한 경우, OID가 삭제된 경우입니다.

    #hostingforum.kr
    sql
    
    BEGIN;
    
    DELETE FROM 테이블명 WHERE OID = 특정_OID;
    
    COMMIT;
    
    


    2. OID가 재할당된 경우: OID가 재할당된 경우, 해당 OID는 다시 할당되지 않으며, OID가 증가하지 않습니다. 예를 들어, 다음과 같은 쿼리를 실행한 경우, OID가 재할당된 경우입니다.

    #hostingforum.kr
    sql
    
    BEGIN;
    
    ALTER TABLE 테이블명 ALTER COLUMN OID SET DEFAULT OID;
    
    COMMIT;
    
    


    OID가 증가하지 않는 이유는 PostgreSQL의 OID 할당 정책 때문입니다. PostgreSQL는 OID를 할당할 때, 이전에 삭제된 OID를 재사용하지 않도록 하기 위해 OID를 재할당하지 않습니다. 또한, OID가 재할당되는 경우, 데이터베이스의 일관성을 유지하기 위해 OID가 증가하지 않습니다.

    2025-06-09 21:25

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 28,961건 / 1 페이지

검색

게시물 검색