ALTER SEQUENCE - Amazon Aurora DSQL

ALTER SEQUENCE

ALTER SEQUENCE: cambiar la definición de un generador de secuencias.

importante

Al utilizar secuencias, se debe tener muy en cuenta el valor de la caché. Para obtener más información, consulte el aviso Importante de la página CREATE SEQUENCE.

Para obtener orientación sobre cómo utilizar mejor las secuencias basadas en patrones de carga de trabajo, consulte Trabajar con secuencias y columnas de identidad.

Sintaxis admitida

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

Descripción

ALTER SEQUENCE cambia los parámetros de un generador de secuencias existente. Todos los parámetros que no estén establecidos específicamente en el comando ALTER SEQUENCE conservan su configuración anterior.

Debe ser el propietario de la secuencia para utilizar ALTER SEQUENCE. Para modificar el esquema de una secuencia, también debe tener el privilegio CREATE en el nuevo esquema. Para modificar el propietario, debe poder utilizar SET ROLE en el nuevo rol de propietario y ese rol debe tener el privilegio CREATE en el esquema de la secuencia. (Estas restricciones garantizan que modificar el propietario no haga nada que no se pueda hacer eliminando y volviendo a crear la secuencia. Sin embargo, un superusuario puede cambiar la propiedad de cualquier secuencia de todos modos).

Parameters

name

El nombre (opcionalmente calificado por el esquema) de una secuencia que se va a modificar.

IF EXISTS

No se genera un error si la secuencia no existe. En este caso, se emite un aviso.

incremento

La cláusula INCREMENT BY increment es opcional. Un valor positivo formará una secuencia ascendente y uno negativo una secuencia descendente. Si no se especifica, se mantendrá el valor de incremento anterior.

minvalue / NO MINVALUE

La cláusula opcional MINVALUE minvalue determina el valor mínimo que puede generar una secuencia. Si se especifica NO MINVALUE, se utilizarán los valores predeterminados de 1 y el valor mínimo del tipo de datos para secuencias ascendentes y descendentes, respectivamente. Si no se especifica ninguna opción, se mantendrá el valor mínimo actual.

maxvalue / NO MAXVALUE

La cláusula opcional MAXVALUE maxvalue determina el valor máximo para la secuencia. Si se especifica NO MAXVALUE, se utilizarán los valores predeterminados del valor máximo del tipo de datos y -1 para secuencias ascendentes y descendentes, respectivamente. Si no se especifica ninguna opción, se mantendrá el valor máximo actual.

CYCLE

La palabra clave CYCLE opcional se puede utilizar para permitir que la secuencia se repita cuando los valores maxvalue o minvalue se han alcanzado mediante una secuencia ascendente o descendente, respectivamente. Si se alcanza el límite, el siguiente número generado será el valor minvalue o maxvalue, respectivamente.

NO CYCLE

Si se especifica la palabra clave NO CYCLE opcional, cualquier llamada a nextval después de que la secuencia haya alcanzado su máximo valor devolverá un error. Si no se especifica CYCLE ni NO CYCLE, se mantendrá el comportamiento del ciclo antiguo.

iniciar

La cláusula opcional START WITH start cambia el valor inicial registrado de la secuencia. Esto no afecta al valor de secuencia actual; simplemente establece el valor que utilizarán los futuros comandos ALTER SEQUENCE RESTART.

restart

La cláusula opcional RESTART [ WITH restart ] cambia el valor actual de la secuencia. Esto es similar a llamar a la función setval con is_called = false: el valor especificado se devolverá en la siguiente llamada de nextval. Escribir RESTART sin un valor de reinicio equivale a proporcionar el valor inicial registrado por CREATE SEQUENCE o establecido por última vez por ALTER SEQUENCE START WITH.

A diferencia de una llamada de setval, una operación RESTART en una secuencia es transaccional e impide que las transacciones simultáneas obtengan números de la misma secuencia. Si ese no es el modo de operación deseado, debería usarse setval.

cache

La cláusula CACHE cache permite preasignar números de secuencia y almacenarlos en la memoria para un acceso más rápido. El valor debe ser 1 o algún valor >= 65536. Si no se especifica, se mantendrá el valor de caché antiguo. Para obtener más información sobre el comportamiento de la caché, consulte las instrucciones que se incluyen en CREATE SEQUENCE.

OWNED BY table_name.column_name / OWNED BY NONE

La opción OWNED BY hace que la secuencia se asocie a una columna de tabla específica, de modo que si se elimina esa columna (o su tabla completa), la secuencia también se eliminará automáticamente. Si se especifica, esta asociación reemplaza cualquier asociación previamente especificada para la secuencia. La tabla especificada debe tener el mismo propietario y estar en el mismo esquema que la secuencia. Especificar OWNED BY NONE elimina cualquier asociación existente, haciendo que la secuencia sea “independiente”.

new_owner

El nombre de usuario del nuevo propietario de la secuencia.

new_name

El nuevo nombre de la secuencia.

new_schema

El nuevo esquema de la secuencia.

Notas

ALTER SEQUENCE no afectará inmediatamente a los resultados de nextval en los backends, salvo en el actual, que tienen valores de secuencia preasignados (almacenados en caché). Utilizarán todos los valores en caché antes de detectar los parámetros de generación de secuencias modificados. El backend actual se verá afectado de forma inmediata.

ALTER SEQUENCE no afecta al estado de currval para la secuencia.

ALTER SEQUENCE puede provocar otras transacciones a OCC.

Por razones históricas, ALTER TABLE también se puede utilizar con secuencias; pero las variantes de ALTER TABLE que se permiten con secuencias son solo las equivalentes a las formas mostradas anteriormente.

Ejemplos

Reinicie una secuencia llamada serial en 105:

ALTER SEQUENCE serial RESTART WITH 105;

Compatibilidad

ALTER SEQUENCE cumple con el estándar SQL, excepto por las cláusulas AS, START WITH, OWNED BY, OWNER TO, RENAME TO y SET SCHEMA, que son extensiones de PostgreSQL.