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 BYes 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.increment minvalue/NO MINVALUE-
La cláusula opcional
MINVALUEdetermina el valor mínimo que puede generar una secuencia. Si se especificaminvalueNO 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
MAXVALUEdetermina el valor máximo para la secuencia. Si se especificamaxvalueNO 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
CYCLEopcional se puede utilizar para permitir que la secuencia se repita cuando los valoresmaxvalueominvaluese han alcanzado mediante una secuencia ascendente o descendente, respectivamente. Si se alcanza el límite, el siguiente número generado será el valorminvalueomaxvalue, respectivamente. NO CYCLE-
Si se especifica la palabra clave
NO CYCLEopcional, cualquier llamada anextvaldespués de que la secuencia haya alcanzado su máximo valor devolverá un error. Si no se especificaCYCLEniNO CYCLE, se mantendrá el comportamiento del ciclo antiguo. iniciar-
La cláusula opcional
START WITHcambia el valor inicial registrado de la secuencia. Esto no afecta al valor de secuencia actual; simplemente establece el valor que utilizarán los futuros comandosstartALTER SEQUENCE RESTART. restart-
La cláusula opcional
RESTART [ WITHcambia el valor actual de la secuencia. Esto es similar a llamar a la funciónrestart]setvalconis_called=false: el valor especificado se devolverá en la siguiente llamada denextval. EscribirRESTARTsin un valor dereinicioequivale a proporcionar el valor inicial registrado porCREATE SEQUENCEo establecido por última vez porALTER SEQUENCE START WITH.A diferencia de una llamada de
setval, una operaciónRESTARTen 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 usarsesetval. cache-
La cláusula
CACHEpermite 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.cache OWNED BY/table_name.column_nameOWNED BY NONE-
La opción
OWNED BYhace 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. EspecificarOWNED BY NONEelimina 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.