ALTER SEQUENCE

ALTER SEQUENCE —更改序列生成器的定义

Synopsis

ALTER SEQUENCE [ IF EXISTS ] name
    [ AS data_type ]
    [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ]
    [ RESTART [ [ WITH ] restart ] ]
    [ CACHE cache ] [ [ NO ] CYCLE ]
    [ OWNED BY { table_name.column_name | NONE } ]
ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_USER | SESSION_USER }
ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name
ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema

Description

ALTER SEQUENCE更改现有序列生成器的参数。 ALTER SEQUENCE命令中未特别设置的所有参数均保留其先前的设置。

您必须拥有序列才能使用ALTER SEQUENCE。要更改序列的架构,您还必须对新架构具有CREATE特权。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须对序列的架构具有CREATE特权。 (这些限制规定,更改所有者不会通过删除并重新创建序列来完成您做不到的任何事情.但是,超级用户仍然可以更改任何序列的所有权.)

Parameters

仅当先前的最小值和最大值是旧数据类型的最小值或最大值时(换句话说,如果该序列是使用NO MINVALUENO MAXVALUE创建的),更改数据类型就会自动更改序列的最小值和最大值。 ,隐式或显式)。否则,将保留最小值和最大值,除非在同一命令中给出了新值。如果最小值和最大值不适合新的数据类型,则将生成错误。

setval调用相反,对序列进行RESTART操作是事务性的,并阻止并发事务从同一序列中获取数字。如果这不是所需的操作模式,则应使用setval

Notes

ALTER SEQUENCE不会立即影响nextval结果(当前后端除外)中具有预分配(缓存)序列值的后端。在注意到更改的序列生成参数之前,它们将用尽所有缓存的值。当前后端将立即受到影响。

ALTER SEQUENCE不会影响序列的currval状态。 (在 PostgreSQL 8.3 之前,有时会这样做.)

ALTER SEQUENCE阻止并发nextvalcurrvallastvalsetval调用。

由于历史原因,ALTER TABLE也可以与序列一起使用;但是序列允许的ALTER TABLE的唯一变体与上面显示的形式等效。

Examples

在 105 重新启动一个名为serial的序列:

ALTER SEQUENCE serial RESTART WITH 105;

Compatibility

ALTER SEQUENCE符合 SQL 标准,但ASSTART WITHOWNED BYOWNER TORENAME TOSET SCHEMA子句是 PostgreSQL 的扩展。

See Also

CREATE SEQUENCE, DROP SEQUENCE

上一章 首页 下一章