시리얼(SERIAL)은 고유한 순번을 생성하는 객체이다. 시리얼은 다음과 같은 특성을 갖는다.
CREATE SERIAL 문을 이용하여 데이터베이스에 시리얼 객체를 생성한다.
CREATE SERIAL serial_name
[ START WITH initial ]
[ INCREMENT BY interval]
[ MINVALUE min | NOMINVALUE ]
[ MAXVALUE max | NOMAXVALUE ]
[ CACHE integer | NOCACHE ]
--creating serial with default values
CREATE SERIAL order_no;
--creating serial within a specific range
CREATE SERIAL order_no START WITH 10000 INCREMENT BY 2 MAXVALUE 20000;
--creating serial with specifying the number of cached serial values
CREATE SERIAL order_no START WITH 10000 INCREMENT BY 2 MAXVALUE 20000 CACHE 3;
--selecting serial information from the db_serial class
SELECT * FROM db_serial;
;xr
=== <Result of SELECT Command in Line 1> ===
name current_val increment_val max_val min_val cyclic started cached_num att_name
====================================================================================================================================================
'order_no' 10006 2 20000 10000 0 1 3 NULL
다음은 선수 번호와 이름을 저장하는 athlete_idx 테이블을 생성하고 order_no 시리얼을 이용하여 인스턴스를 생성하는 예제이다. order_no.CURRENT_VALUE은 시리얼의 현재 값을 반환하고, order_no. NEXT_VALUE는 시리얼 값을 증가시킨 후 값을 반환한다.
CREATE TABLE athlete_idx( code INT, name VARCHAR(40) );
CREATE SERIAL order_no START WITH 10000 INCREMENT BY 2 MAXVALUE 20000;
INSERT INTO athlete_idx VALUES (order_no.NEXT_VALUE, 'Park');
INSERT INTO athlete_idx VALUES (order_no.NEXT_VALUE, 'Kim');
INSERT INTO athlete_idx VALUES (order_no.NEXT_VALUE, 'Choo');
INSERT INTO athlete_idx VALUES (order_no.CURRENT_VALUE, 'Lee');
SELECT * FROM athlete_idx;
=== <Result of SELECT Command in Line 1> ===
code name
===================================
10000 'Park'
10002 'Kim'
10004 'Choo'
10004 'Lee'