값을 빠뜨렸을 때 데이터베이스가 채운다
기본값은 INSERT에서 해당 열을 생략했을 때 적용돼. 명시적으로 NULL을 넣은 경우까지 대신 채우지는 않아. 모든 클라이언트가 각자 같은 값을 만들게 하지 않고 데이터베이스 한 곳에 규칙을 두는 장점이 있어.
고정값, 표현식, 생성값
- 고정 기본값에는
0,'draft',FALSE처럼 그대로 저장할 값을 둬. - 표현식 기본값에는
now(),CURRENT_DATE,gen_random_uuid()처럼 행을 넣는 순간 계산할 값을 둬. - API 키처럼 32바이트 난수가 필요하면
encode(gen_random_bytes(32),'hex')같은 표현식도 쓸 수 있어.
생성 열은 다른 열에서 답을 얻어
생성 열은 같은 행의 값으로 계산되며 직접 INSERT하거나 UPDATE할 수 없어. PostgreSQL이 언제나 공식을 지키므로 전체 이름, 세금 포함 금액, 검색 벡터 같은 파생값에 알맞아. 디스크에 저장하는 STORED 방식이 있고 PG 18부터는 읽을 때 계산하는 VIRTUAL 방식도 있어. PG 18의 기능 차이를 확인한 뒤 색인이 필요하면 STORED를 써.