# 改变顺序

更改序列-更改序列生成器的定义

# 提要

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_ROLE | CURRENT_USER | SESSION_USER }
ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name
ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema

# 描述

改变顺序更改现有序列生成器的参数。中未特别设置的任何参数改变顺序命令保留其先前的设置。

您必须拥有要使用的序列改变顺序。要更改序列的架构,还必须创造新模式的特权。要更改所有者,您还必须是新所有者角色的直接或间接成员,并且该角色必须具有创造序列模式上的权限。(这些限制强制规定,更改所有者不会做任何你不能通过删除和重新创建序列来做的事情。但是,超级用户无论如何都可以更改任何序列的所有权。)

# 参数

名称

要更改的序列的名称(可选模式限定)。

如果存在

如果序列不存在,不要抛出错误。在这种情况下会发出通知。

数据类型

任择条款作为*数据类型*更改序列的数据类型。有效类型为短整型,整数比基特.

当且仅当之前的最小值和最大值是旧数据类型的最小值或最大值时(换句话说,如果序列是使用没有价值没有最大值,隐式或显式地)。否则,将保留最小值和最大值,除非在同一命令中给出新值。如果最小值和最大值不适合新的数据类型,将生成错误。

定期的加薪

条款增加*定期的加薪*是可选的。正值表示升序,负值表示降序。如果未指定,将保留旧的增量值。

minvalue
没有价值

任择条款MINVALUE*minvalue*确定序列可以生成的最小值。如果没有价值指定时,将分别使用升序和降序数据类型的默认值1和最小值。如果两个选项均未指定,则将保持当前最小值。

最大值
没有最大值

任择条款最大值*最大值*确定序列的最大值。如果没有最大值指定时,将分别使用数据类型的最大值和升序和降序的-1的默认值。如果两个选项均未指定,则将保持当前最大值。

开始

任择条款从*开始*更改记录的序列起始值。这对环境没有影响现在的序列值;它只是设定了未来的价值改变顺序重启命令将使用。

重新启动

任择条款重新开始*重新启动* ]更改序列的当前值。这类似于调用塞特瓦尔作用于你叫什么 = 错误的:指定的值将由下一个召唤nextval重新启动没有*重新启动*值相当于提供由记录的开始值创建序列还是最后一个改变顺序从.

塞特瓦尔打电话,a重新启动对序列的操作是事务性的,会阻止并发事务从同一序列中获取数字。如果这不是理想的操作模式,塞特瓦尔应该使用。

隐藏物

条款缓存*隐藏物*使序列号能够预先分配并存储在内存中,以便更快地访问。最小值为1(一次只能生成一个值,即没有缓存)。如果未指定,将保留旧的缓存值。

周期

可选的周期关键字可用于使序列在*最大值minvalue分别以升序或降序到达。如果达到限制,则生成的下一个数字将是minvalue最大值*分别地

没有循环

如果可选没有循环关键字已指定,任何调用nextval序列达到最大值后,将返回一个错误。如果两者都不是周期没有循环如果指定,则将保持旧的循环行为。

所有者 表2\u名称.列名
无人拥有

这个所有者选项使序列与特定的表列相关联,这样,如果删除该列(或其整个表),序列也将自动删除。如果指定,此关联将替换之前为序列指定的任何关联。指定的表必须具有相同的所有者,并且与序列处于相同的架构中。指定无人拥有删除任何现有关联,使序列“独立”。

新老板

序列的新所有者的用户名。

新名字

序列的新名称。

新的_模式

序列的新模式。

# 笔记

改变顺序不会立即影响nextval导致后端(而不是当前后端)具有预分配(缓存)的序列值。在注意到已更改的序列生成参数之前,它们将用完所有缓存的值。当前后端将立即受到影响。

改变顺序不影响库瓦尔序列的状态。(在PostgreSQL 8.3之前,有时的确如此。)

改变顺序块并发nextval, 库瓦尔, 拉斯瓦尔塞特瓦尔电话。

出于历史原因,改变桌子也可以与序列一起使用;但是改变桌子序列中允许的形式等同于上面所示的形式。

# 例子

重新启动一个名为电视连续剧,第105页:

ALTER SEQUENCE serial RESTART WITH 105;

# 兼容性

改变顺序符合SQL标准,但, , 所有者, 所有者, 改名为设置模式子句,它们是PostgreSQL扩展。

# 另见

创建序列, 丢弃序列