본문 바로가기
빌드노트 검색

빌드노트

데이터베이스

데이터베이스 카테고리의 글입니다.

글 검색

글 목록

총 48개의 글

  1. PostgreSQL LEFT JOIN에 WHERE 조건을 넣자 부모 행이 사라졌다

    LEFT JOIN 뒤 WHERE에 자식 상태 조건을 두면 자식이 없는 부모도 결과에서 빠진다. PostgreSQL 18.6의 실제 행과 NULL을 비교해 모든 부모를 남기는 ON 조건, 일치하는 부모만 남기는 WHERE 조건을 고른다. OR IS NULL의 한계와 자식이 여럿일 때의 행 수도 확인한다.

  2. INSERT 실패 뒤 SELECT도 25P02라면 트랜잭션부터 복구한다

    UNIQUE 위반 뒤 SELECT까지 25P02로 실패하면 현재 트랜잭션의 실패 상태를 본다. PostgreSQL 18.6에서 전체 롤백과 사전 저장점 복구를 비교하고, 이전 성공 쓰기 중 무엇이 최종 커밋에 남는지 확인했다.

  3. PostgreSQL에서 (1 / 2)::numeric이 0인 이유

    PostgreSQL에서 (1 / 2)::numeric은 타입만 numeric인 0이다. 실제 값과 pg_typeof를 비교해 나눗셈 전에 변환할 위치를 찾고, NULLIF로 0 분모를 처리해도 정상 분모의 정수 나눗셈은 그대로라는 점을 확인한다.

  4. PostgreSQL에서 방금 만든 임시 테이블이 없다면 자동 커밋을 확인한다

    CREATE TEMP TABLE ... ON COMMIT DROP이 성공해도 자동 커밋 직후에는 테이블이 없을 수 있다. PostgreSQL 18.6의 같은 연결에서 생성·조회·커밋 경계를 비교하고, 명시 트랜잭션과 세션 유지 중 필요한 수명을 고른다.

  5. PostgreSQL에서 하루를 더했는데 24시간 뒤와 시각이 다르다

    timestamptz에 더하는 1 day와 24 hours는 뉴욕의 DST 전환에서 다른 순간에 도달한다. PostgreSQL 18.6에서 봄 23시간·가을 25시간과 UTC 대조를 확인하고, 지역 달력의 다음 날과 경과 24시간 중 필요한 계산을 고른다.

  6. PostgreSQL UPDATE에서 b=a가 증가 전 a를 복사하는 이유

    PostgreSQL의 SET a=a+1, b=a는 b에 갱신 전 a를 넣는다. 같은 한 행에서 항목 순서 변경, 두 열 교환, b=a+1을 비교하고 RETURNING이 보여 주는 갱신 후 값과 구별한다.

  7. PostgreSQL DEFAULT가 있는데 명시적 NULL은 그대로 저장된다

    PostgreSQL에서 열 생략·DEFAULT·명시적 NULL·지정값을 RETURNING으로 비교한다. NOT NULL 대조를 통해 기본값 요청과 NULL 거부를 구별하고 INSERT 입력 계약을 정한다.

  8. PostgreSQL varchar(3): 직접 INSERT는 오류인데 캐스팅하면 잘린다

    PostgreSQL의 varchar(3)은 직접 INSERT와 명시적 캐스팅에서 길이 초과 처리 방식이 다르다. 영문·한글·초과 공백·탭을 비교하고, 원본 char_length 검증과 text의 CHECK 제약으로 잘린 값의 저장 대신 입력 거부를 선택한다.

  9. PostgreSQL에서 round(double precision, 2)가 없다는 오류가 날 때

    PostgreSQL에서 round(double precision, 2)가 실패하는 이유를 실제 타입과 내장 오버로드로 확인한다. numeric 변환의 효과와 한계, 동점 반올림 차이, 두 자리 표시용 to_char를 작은 실행 결과로 구분한다.

  10. CREATE TABLE AS로 복사한 테이블에서 중복 ID가 들어간다

    CTAS 복사본의 첫 행이 원본과 같아도 PK·NOT NULL·기본값은 같지 않을 수 있다. PostgreSQL 18.6에서 카탈로그와 중복·NULL·기본값 생략 INSERT를 비교하고, 명시한 스키마로 옮기거나 기존 데이터 확인 후 필요한 DDL을 보충하는 판단을 설명한다.

  11. PostgreSQL에 "OrderItem"이 있는데 OrderItem 조회는 실패한다

    PostgreSQL에서 "OrderItem"과 orderitem은 서로 다른 테이블일 수 있다. 실제 DB·스키마·철자를 조회하고, 세 가지 이름 표기의 반환값과 SQLSTATE를 비교해 일관된 참조 방식을 고른다.

  12. PostgreSQL CHECK (price > 0)를 걸었는데 NULL이 저장된다

    CHECK (price > 0)는 거짓인 0과 음수는 거부하지만 UNKNOWN인 NULL은 통과시킨다. PostgreSQL 18.6의 짧은 임시 테이블 비교로 이를 확인하고, 실제 열 정의를 읽어 필수 가격에는 NOT NULL도 선언하는 판단을 설명한다.