PostgreSQL 시퀀스와 시퀀스 객체를 사용하여 일련의 숫자를 생성하는 방법
정의에 따르면 시퀀스는 정렬된 정수 목록입니다. 순서에서 숫자의 순서가 중요합니다.
예를 들어, {1,2,3,4,5}및 {5,4,3,2,1}완전히 다른 시퀀스입니다.
PostgreSQL의 시퀀스는 지정된 사양을 기반으로 정수 시퀀스를 생성하는 사용자 정의 스키마 바인딩 개체입니다.
CREATE SEQUENCE문 을 사용합니다 .
CREATE SEQUENCE [ IF NOT EXISTS ] sequence_name
[ AS { SMALLINT | INT | BIGINT } ]
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ]
[ CACHE cache ]
[ [ NO ] CYCLE ]
[ OWNED BY { table_name.column_name | NONE } ]
sequence_name
CREATE SEQUENCE절 뒤에 시퀀스 이름을 지정합니다 .
IF NOT EXISTS는 조건이 존재하지 않는 경우에만 새로운 시퀀스를 생성한다.
시퀀스 이름은 동일한 스키마의 다른 시퀀스, 테이블, 인덱스 , 뷰 또는 외부 테이블과 구별되어야 합니다 .
[ AS { SMALLINT | INT | BIGINT } ]
시퀀스 의 데이터 유형 을 지정합니다 .
유효한 데이터 유형은 SMALLINT, INT하고 BIGINT. 기본 데이터 유형은 BIGINT건너뛸 경우입니다.
시퀀스의 최소값과 최대값을 결정하는 시퀀스의 데이터 유형입니다.
[ INCREMENT [ BY ] increment ]
increment현재의 시퀀스 값에 부가 될 값 지정 새로운 값을 생성한다.
양수는 오름차순을 만들고 음수는 내림차순을 만듭니다.
기본 증분 값은 1입니다.
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
시퀀스의 최소값과 최대값을 정의합니다.
NO MINVALUE및 를 사용하는 경우 NO MAXVALUE시퀀스는 기본값을 사용합니다.
오름차순 시퀀스의 경우 기본 최대값은 시퀀스 데이터 유형의 최대값이고 기본 최소값은 1입니다.
내림차순 시퀀스의 경우 기본 최대값은 -1이고 기본 최소값은 시퀀스 데이터 유형의 최소값입니다.
[ START [ WITH ] start ]
START절 시퀀스의 시작 값을 지정한다.
기본 시작 값은 minvalue오름차순 및 maxvalue내림차순입니다.
cache
이 CACHE많은, 시퀀스 번호를 사전에 할당 해 빠른 액세스를 위해 메모리에 저장하는 방법을 결정합니다. 한 번에 하나의 값을 생성할 수 있습니다.
기본적으로 시퀀스는 캐시 없이 한 번에 하나의 값을 생성합니다.
CYCLE | NO CYCLE
는 CYCLE한계에 도달하는 경우이 값을 다시 시작 할 수 있습니다.
다음 숫자는 오름차순 시퀀스의 최소값과 내림차순 시퀀스의 최대값입니다.
를 사용하는 경우 NO CYCLE제한에 도달했을 때 다음 값을 가져오려고 하면 오류가 발생합니다.
은 NO CYCLE명시 적으로 지정하지 않은 경우 기본값입니다 CYCLE나 NO CYCLE.
OWNED BY table_name.column_name
이 OWNED BY절을 사용하면 테이블 열을 시퀀스와 연결할 수 있으므로 열이나 테이블을 삭제할 때 PostgreSQL이 연결된 시퀀스를 자동으로 삭제합니다.
SERIAL테이블의 열에 의사 유형을 사용할 때 백그라운드에서 PostgreSQL은 열과 연결된 시퀀스를 자동으로 생성합니다.
CREATE SEQUENCE three
INCREMENT -1
MINVALUE 1
MAXVALUE 3
START 3
CYCLE;
Code language: SQL (Structured Query Language) (sql)
SELECT nextval('three');
CREATE TABLE order_details(
order_id SERIAL,
item_id INT NOT NULL,
item_text VARCHAR NOT NULL,
price DEC(10,2) NOT NULL,
PRIMARY KEY(order_id, item_id)
);
CREATE SEQUENCE order_item_id
START 10
INCREMENT 10
MINVALUE 10
OWNED BY order_details.item_id;
INSERT INTO
order_details(order_id, item_id, item_text, price)
VALUES
(100, nextval('order_item_id'),'DVD Player',100),
(100, nextval('order_item_id'),'Android TV',550),
(100, nextval('order_item_id'),'Speaker',250);
SELECT
order_id,
item_id,
item_text,
price
FROM
order_details;
'SW ENGINEERING > Postgres' 카테고리의 다른 글
[PostgreSQL] BASIC - Identity Column (0) | 2021.09.06 |
---|---|
[PostgreSQL] BASIC - SERIAL (0) | 2021.09.06 |
[PostgreSQL] BASIC - SELECT INTO/CREATE TABLE (0) | 2021.09.06 |
[PostgreSQL] BASIC - CREATE TABLE (0) | 2021.09.06 |
[PostgreSQL] BASIC - Data Types - 2 (0) | 2021.09.06 |
최근댓글