PostgreSQL 자동증가 AUTO INCREMENT

찌글렛·2022년 5월 30일
0

DB

목록 보기
5/7

PostgreSQL에서는 전통적으로 어떤 숫자를 차례대로 사용할 경우, 시퀀스 SEQUENCE 라는 개체를 사용했습니다.

-- 시퀀스 생성	
CREATE SEQUENCE seq_ttt;	
	
-- 테이블 생성 
CREATE TABLE tbl_ttt_seq 
(
    seq int not null default nextval('seq_ttt') --시퀀스 매칭
,   a varchar(10)
);

-- 테이블 삭제시 시퀀스도 같이 삭제 처리
ALTER SEQUENCE seq_ttt OWNED BY tbl_ttt_seq.seq; 

insert into tbl_ttt_seq (a) values ('aaa');
insert into tbl_ttt_seq (a) values ('bbb');
insert into tbl_ttt_seq (a) values ('ccc');
insert into tbl_ttt_seq (a) values ('ddd');
insert into tbl_ttt_seq (a) values ('eee');
insert into tbl_ttt_seq (id,a) values (default,'eee');

--select * from tbl_ttt_seq

-- 자동적으로 테이블과 시퀀스가 삭제됩니다.
drop table tbl_ttt_seq;

위 sequence 개체를 사용하는 경우, 몇 가지 불편한 점이 있습니다. 미리 시퀀스를 만들어야 하며, 테이블을 만들 때, 긴 칼럼 정의를 해야하고, 테이블을 지울 때, 시퀀스도 따로 지워야 합니다. 이런 불편함을 해결 하기 위에서 PostgreSQL에서는 serial 이라는 자료형을 제공하고 PRIMARY KEY 지정해주면 자동증가 가능합니다.

CREATE TABLE foo2 (
    id serial PRIMARY KEY ,
    NAME CHARACTER VARYING(255)
	)

insert into foo2 (name) values ('홍길동');
insert into foo2 (id, name) values (1,'홍길동');
insert into foo2 (id, name) values (default,'홍길동');

이렇게 독립된 sequence 개체를 이용하는 방법보다 간단하고, 테이블 삭제 때 신경 쓸 부분이 적습니다. 위의 구문은 전부 오류가 발생되지 않으며, id 값을 강제로 입력하여 저장도 가능합니다. 이로 인해 id 필드 값에 중복값이 발생될수 있습니다.

0개의 댓글