# 改变顺序
更改序列-更改序列生成器的定义
# 提要
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扩展。