PostgreSQL 에서 컬럼을 설정할 때 기본값(default) 에 대해서 정리해보려고 한다.
기본값 (default) 이란
PostgreSQL 에서 컬럼의 Default 는 해당 컬럼에 데이터를 삽입할 때 명시적으로 값을 제공하지 않을 때 사용되는 기본값을 정의하는데 사용된다. 쉽게 말해서 어떠한 동작을 하지 않을 때 기본적으로 Default 에 명시된 값이 들어간다는 말이다.
예를 들어 Default 는 다음과 같이 설정할 수 있다.
CREATE TABLE test_table (
id serial PRIMARY KEY,
name VARCHAR(255) DEFAULT '아무개'
);
name 에 아무런 값을 등록하지 않으면 '아무개' 라는 값이 들어가게 된다.
그리고 Default 는 다음과 같이 수정하고 제거할 수 있다.
-- default 수정
ALTER TABLE test_table
ALTER COLUMN name SET DEFAULT '제이로그';
-- default 삭제
ALTER TABLE test_table
ALTER COLUMN name DROP DEFAULT;
또한 시퀀스와 함께 사용된다고 한다.
잠깐 시퀀스에 대해서 간단하게 설명하자면 일련의 숫자를 자동으로 생성하는 객체를 말하는데 주료 고유한 인덱스와 같은 값을 생성할 때 주로 사용한다. 따라서 기본키를 생성할 때 주로 사용하고 자동으로 고유한 값을 할당할 때 시리얼 데이터 타입과 함께 사용한다고 한다.
다음과 같이 시퀀스와 연결되어 자동으로 증가하는 인덱스 값을 설정한다.
CREATE TABLE test_table (
id serial PRIMARY KEY,
name VARCHAR(255)
);
그리고 id 값을 제외한 name 값만 insert 한다.
INSERT INTO test_table (name) VALUES ('Jay'); -- id는 자동으로 생성됨
그럼 자동으로 id 값이 시퀀스에서 자동으로 생성되는 다음 값을 사용해 입력하게 된다.
이렇게 시퀀스와 Default 가 같이 사용된다는 말은 시퀀스를 Default 값으로 사용해 자동으로 id 값을 증가시켜주기 때문이다.
이렇게 Default 는 데이터 무결성과 기본값 제공의 측면에서 유용하게 사용할 수 있고 데이터 삽입 및 업데이트 작업을 단순화하는데 많은 도움을 줄 수 있다.
'데이터 엔지니어링 > Database' 카테고리의 다른 글
Postgresql Idle in transaction (1) | 2024.03.14 |
---|---|
Postgresql auto increment 적용하기 (0) | 2024.02.16 |
Postgresql 과 MySQL 비교 (0) | 2023.08.10 |
Mysql OperationalError: (1205, 'Lock wait timeout exceeded; try restarting transaction') 에러 발생 (0) | 2023.07.06 |
Mysql 8 버전 Sequal Pro 접속 에러 (0) | 2023.04.14 |