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

빌드노트

데이터베이스

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

글 검색

글 목록

총 48개의 글

  1. PostgreSQL NOT VALID 외래키인데 새 INSERT는 거절된다

    NOT VALID 외래키는 기존 행의 검증을 미루지만 새 위반 INSERT를 허용하지 않는다. PostgreSQL 18.6에서 새 쓰기 거절, 기존 위반 정리 전후 VALIDATE와 convalidated의 변화를 비교해 데이터 정리와 검증 완료를 구분한다.

  2. PostgreSQL DO NOTHING 뒤에는 기존 행의 ID가 안 나온다

    ON CONFLICT DO NOTHING은 중복 행을 건너뛰므로 RETURNING id도 0행이 된다. PostgreSQL 18.6에서 첫 삽입·중복·별도 SELECT와 같은 값 UPDATE의 트리거 실행을 비교하고, 기존 ID 조회 경로와 동시성 미검증 범위를 설명한다.

  3. PostgreSQL JSONB에서 뽑은 문자열에 따옴표가 남는 이유

    JSONB의 ->는 JSON 값을, ->>는 SQL text를 반환한다. PostgreSQL 18.6의 합성 입력으로 문자열·숫자·JSON null·없는 키·SQL NULL의 결과를 비교하고, 따옴표 처리와 타입 확인, 숫자 캐스팅의 판단 기준을 설명한다.

  4. PostgreSQL now()가 트랜잭션 안에서 계속 같은 값을 준다

    오래 열린 트랜잭션에서 now()가 반복되는 이유를 짧은 SQL로 확인한다. 트랜잭션 시작, SQL 시작, 호출 순간 중 기록할 의미에 따라 now(), statement_timestamp(), clock_timestamp()를 고르는 기준을 설명한다.

  5. PostgreSQL NOT IN 조회가 비었다면 제외 목록의 NULL을 확인한다

    NOT IN 하위 조회에 NULL이 섞이면 제외 목록에 없는 행도 결과에서 사라진다. 임시 PostgreSQL 18.6의 실제 출력으로 NULL 필터와 상관 NOT EXISTS를 비교하고, 조회 대상의 NULL을 남길지 같은 값으로 제외할지 고르는 방법을 설명한다.

  6. PostgreSQL 이관 뒤 자동 INSERT가 중복 키로 실패하면 시퀀스를 확인한다

    명시적 ID를 넣은 이관은 시퀀스를 전진시키지 않을 수 있다. PostgreSQL 18.6에서 자동 INSERT 충돌, setval의 true·false와 빈 테이블, 롤백 후 남는 번호를 비교하고 실제 생성 경로와 쓰기 중단 조건을 확인한다.

  7. PostgreSQL DISTINCT ON으로 최신 행을 골랐는데 과거 행이 나온다

    DISTINCT ON은 그룹마다 첫 행을 남기므로 최신 시각과 동률 ID 규칙을 ORDER BY에 적어야 한다. PostgreSQL 18.6에서 시각·ID 정렬 방향, 잘못된 선두 정렬의 42P10 오류, 대표행 선택 뒤 표시 순서를 실제 비교했다.

  8. PostgreSQL에서 날짜 내림차순인데 NULL 행이 맨 위에 나온다

    PostgreSQL의 DESC는 기본적으로 NULL을 앞에 둔다. 네 개의 합성 행으로 ASC·DESC·NULLS LAST와 LIMIT 1을 비교하고, 동률 보조 키와 날짜 없는 행을 제외할 조건을 정한다.

  9. LIKE로 복제한 PostgreSQL 테이블이 원본 시퀀스를 같이 쓴다

    LIKE INCLUDING DEFAULTS로 serial 열을 복사하면 nextval 기본값이 원본 시퀀스를 계속 가리킨다. PostgreSQL 18.6에서 기본값·카탈로그·교차 INSERT를 비교하고, 복사본에 새 시퀀스를 연결하는 방법과 identity 복사의 독립 생성기를 확인한다.

  10. CREATE INDEX IF NOT EXISTS가 성공해도 인덱스 열은 바뀌지 않는다

    CREATE INDEX IF NOT EXISTS는 같은 이름이 있으면 생성을 건너뛴다. PostgreSQL 18.6에서 NOTICE·OID·정의의 불변과 새 이름의 b 인덱스를 비교하고, pg_get_indexdef와 카탈로그로 실제 정의를 확인하는 방법을 설명한다.

  11. PostgreSQL jsonb @>는 배열의 순서와 중복 개수를 검사하지 않는다

    jsonb의 @>는 배열 원소의 순서와 중복 횟수를 구분하지 않는다. PostgreSQL 18.6에서 포함과 동등 비교를 대조하고, 양방향 포함에 길이를 더해도 값별 개수는 같지 않을 수 있음을 확인한다. 배열 전체의 일치와 개수 비교를 구별해 조건을 선택한다.

  12. PostgreSQL AT TIME ZONE을 붙였는데 시간이 반대로 바뀌는 이유

    같은 AT TIME ZONE을 붙여도 timestamp와 timestamptz는 변환 방향과 결과 타입이 다르다. PostgreSQL 18.6의 UTC·서울 연결에서 타입·표시·epoch를 비교하고, 현지 시각 해석과 특정 지역 표시를 구분한다.