ALTER SEQUENCE
Изменяет определение генератора последовательностей.
Синтаксис
ALTER SEQUENCE [ IF EXISTS ] <name> OWNER TO <new_owner>
ALTER SEQUENCE [ IF EXISTS ] <name> RENAME TO <new_name>
ALTER SEQUENCE [ IF EXISTS ] <name> SET SCHEMA <new_schema>
ALTER SEQUENCE [ IF EXISTS ] <name> [INCREMENT [ BY ] <increment>]
[MINVALUE <minvalue> | NO MINVALUE]
[MAXVALUE <maxvalue> | NO MAXVALUE]
[START [ WITH ] <start> ]
[RESTART [ [ WITH ] <restart>] ]
[CACHE <cache>] [[ NO ] CYCLE]
[OWNED BY {<table.column> | NONE}]
Описание
ALTER SEQUENCE изменяет параметры существующего генератора последовательностей.
Любые параметры, не заданные явно в команде ALTER SEQUENCE, сохраняют свои прежние настройки.
Необходимо быть владельцем генератора последовательности, чтобы использовать ALTER SEQUENCE.
Чтобы изменить схему последовательности, необходимо также иметь привилегию CREATE в новой схеме.
Обратите внимание, что суперпользователи обладают всеми этими привилегиями автоматически.
Чтобы изменить владельца, необходимо быть прямым или косвенным членом новой роли владельца, и эта роль должна иметь привилегию CREATE в схеме последовательности.
Эти ограничения гарантируют, что смена владельца не позволит сделать ничего, что нельзя было бы сделать путем удаления и повторного создания последовательности.
Однако суперпользователь может изменить владельца любой последовательности в любом случае.
Параметры
| Параметр | Описание |
|---|---|
name |
Имя (опционально указанное со схемой) последовательности, которую необходимо изменить |
IF EXISTS |
Не завершать действие ошибкой, если последовательность не существует. В этом случае будет показано уведомление |
increment |
Условие |
minvalue |
Необязательное условие |
maxvalue |
Необязательное условие |
start |
Необязательное условие |
restart |
Необязательное условие |
new_owner |
Имя пользователя нового владельца последовательности |
cache |
Условие |
CYCLE |
Необязательное ключевое слово |
NO CYCLE |
Если указано необязательное ключевое слово |
OWNED BY table.column |
Опция |
new_name |
Новое имя последовательности |
new_schema |
Новая схема последовательности |
Примечания
Чтобы избежать блокировки параллельных транзакций, которые получают номера из одной и той же последовательности, влияние ALTER SEQUENCE на параметры генерации последовательности никогда не отменяется; эти изменения вступают в силу немедленно и необратимы.
Однако условия OWNED BY, OWNER TO, RENAME TO и SET SCHEMA являются обычными обновлениями каталога и могут быть отменены.
ALTER SEQUENCE не повлияет немедленно на результаты nextval() в сеансах, отличных от текущего, которые имеют предварительно выделенные (кешированные) значения последовательности.
Они используют все кешированные значения, прежде чем заметят измененные параметры генерации последовательности.
Текущий сеанс будет затронут немедленно.
По историческим причинам ALTER TABLE также может использоваться с последовательностями; но единственные варианты ALTER TABLE, допустимые с последовательностями, эквивалентны формам, показанным выше.
Примеры
Перезапустить последовательность с именем serial со значения 105:
ALTER SEQUENCE serial RESTART WITH 105;
Совместимость
ALTER SEQUENCE соответствует стандарту SQL, за исключением условий START WITH, OWNED BY, OWNER TO, RENAME TO и SET SCHEMA, которые являются расширениями Greengage DB.