ALTER SEQUENCE
ALTER SEQUENCE - 시퀀스 생성기의 정의를 변경합니다.
중요
시퀀스를 사용할 때는 캐시 값을 신중하게 고려해야 합니다. 자세한 내용은 CREATE SEQUENCE 페이지의 중요 안내를 참조하세요.
워크로드 패턴을 기반으로 시퀀스를 가장 잘 사용하는 방법에 대한 지침은 시퀀스 및 자격 증명 열 작업 섹션을 참조하세요.
지원되는 구문
ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ [ NO ] CYCLE ] [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ] [ CACHE cache ] [ OWNED BY { table_name.column_name | NONE } ] ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema where cache is 1 or cache >= 65536
설명
ALTER SEQUENCE는 기존 시퀀스 생성기의 파라미터를 변경합니다. ALTER SEQUENCE 명령에 구체적으로 설정되지 않은 파라미터는 이전 설정을 유지합니다.
ALTER SEQUENCE를 사용하려면 시퀀스를 소유해야 합니다. 시퀀스의 스키마를 변경하려면 새 스키마에 대한 CREATE 권한도 있어야 합니다. 소유자를 변경하려면 새 소유 역할에 SET ROLE을 수행할 수 있어야 하며 해당 역할에 시퀀스의 스키마에 대한 CREATE 권한이 있어야 합니다. (이러한 제한은 소유자를 변경해도 시퀀스를 삭제하고 다시 생성하여 수행할 수 없는 작업은 수행하지 않도록 강제합니다. 그러나 수퍼유저는 어떤 시퀀스의 소유권도 변경할 수 있습니다.)
파라미터
이름-
변경할 시퀀스의 이름(선택적으로 스키마 한정자 포함)입니다.
IF EXISTS-
시퀀스가 없는 경우 오류가 발생하지 않습니다. 이 경우 알림이 발행됩니다.
increment-
INCREMENT BY절은 선택 사항입니다. 양수 값은 오름차순 시퀀스를 만들고, 음수 값은 내림차순 시퀀스를 만듭니다. 지정하지 않으면 이전 증분 값이 유지됩니다.increment minvalue/NO MINVALUE-
선택적 절
MINVALUE는 시퀀스가 생성할 수 있는 최솟값을 결정합니다.minvalueNO MINVALUE를 지정하면 오름차순 및 내림차순 시퀀스에 대해 1 및 해당 데이터 형식의 최솟값이 기본값으로 각각 사용됩니다. 두 옵션을 모두 지정하지 않으면 현재 최솟값이 유지됩니다. maxvalue/NO MAXVALUE-
선택적 절
MAXVALUE는 시퀀스의 최댓값을 결정합니다.maxvalueNO MAXVALUE를 지정하면 오름차순 및 내림차순 시퀀스에 대해 해당 데이터 형식의 최댓값과 -1이 기본값으로 각각 사용됩니다. 두 옵션을 모두 지정하지 않으면 현재 최댓값이 유지됩니다. CYCLE-
선택적
CYCLE키워드를 사용하여 각각 오름차순 또는 내림차순 시퀀스에 의해maxvalue또는minvalue에 도달했을 때 시퀀스를 래핑할 수 있습니다. 한도에 도달하면 생성되는 다음 숫자는 각각minvalue또는maxvalue가 됩니다. NO CYCLE-
선택적
NO CYCLE키워드가 지정된 경우 시퀀스가 최댓값에 도달한 후nextval을 직접적으로 호출하면 오류가 반환됩니다.CYCLE및NO CYCLE를 모두 지정하지 않으면 이전 주기 동작이 유지됩니다. 시작-
선택적 절
START WITH는 시퀀스의 기록된 시작 값을 변경합니다. 이는 현재 시퀀스 값에 영향을 주지 않으며, 향후startALTER SEQUENCE RESTART명령에서 사용할 값을 설정하기만 합니다. 재시작-
선택적 절
RESTART [ WITH는 시퀀스의 현재 값을 변경합니다. 이는restart]is_called=false로setval함수를 직접적으로 호출하는 것과 유사합니다. 지정된 값은nextval의 다음 직접 호출에 의해 반환됩니다.restart값 없이RESTART를 쓰는 것은CREATE SEQUENCE에서 기록했거나ALTER SEQUENCE START WITH에서 마지막으로 설정한 시작 값을 제공하는 것과 같습니다.setval직접 호출과 달리 시퀀스에 대한RESTART작업은 트랜잭션이며 동시 트랜잭션이 동일한 시퀀스에서 번호를 얻는 것을 차단합니다. 원하는 작업 모드가 아닌 경우setval을 사용해야 합니다. cache-
절
CACHE를 사용하면 더 빠른 액세스를 위해 시퀀스 번호를 미리 할당하고 메모리에 저장할 수 있습니다. 값은 1이거나 65,536 이상이어야 합니다. 지정하지 않으면 이전 캐시 값이 유지됩니다. 캐시 동작에 대한 자세한 내용은 CREATE SEQUENCE 아래의 지침을 참조하세요.cache OWNED BY/table_name.column_nameOWNED BY NONE-
OWNED BY옵션을 사용하면 시퀀스가 특정 테이블 열과 연결되므로 해당 열(또는 전체 테이블)이 삭제되면 시퀀스도 자동으로 삭제됩니다. 지정된 경우 이 연결은 시퀀스에 대해 이전에 지정된 연결을 대체합니다. 지정된 테이블은 소유자가 동일해야 하며 시퀀스와 동일한 스키마에 있어야 합니다.OWNED BY NONE를 지정하면 기존 연결이 제거되어 시퀀스가 ‘독립적으로 존재하는 상태’가 됩니다. new_owner-
새 시퀀스 소유자의 사용자 이름입니다.
new_name-
시퀀스의 새 이름입니다.
new_schema-
시퀀스의 새 스키마입니다.
참고
ALTER SEQUENCE는 사전 할당된(캐싱된) 시퀀스 값이 있는 현재 백엔드를 제외하면 백엔드의 nextval 결과에 즉시 영향을 미치지 않습니다. 변경된 시퀀스 생성 파라미터를 확인하기 전에 캐시된 모든 값을 사용합니다. 현재 백엔드는 즉시 영향을 받습니다.
ALTER SEQUENCE는 시퀀스의 currval 상태에 영향을 주지 않습니다.
ALTER SEQUENCE는 다른 트랜잭션을 OCC로 만들 수 있습니다.
기록상 이유로 시퀀스에도 ALTER TABLE을 사용할 수 있지만, 시퀀스에서 허용되는 ALTER TABLE의 유일한 변형은 위에 표시된 형식과 동일합니다.
예제
105에서 serial이라는 시퀀스를 다시 시작합니다.
ALTER SEQUENCE serial RESTART WITH 105;
호환성
ALTER SEQUENCE는 PostgreSQL 확장인 AS, START WITH, OWNED BY, OWNER TO, RENAME
TO, SET SCHEMA 절을 제외하고 SQL 표준을 준수합니다.