ALTER SEQUENCE 是一个 DDL 命令,用于修改序列的定义。
ALTER SEQUENCE 在 PostgreSQL 7.4 中被添加。
变更历史
- PostgreSQL 15
- 添加了
SET [ LOGGED | UNLOGGED ]语法(提交 344d62fb)
- 添加了
- PostgreSQL 14
- 添加了
ALTER SEQUENCE ... OWNER TO CURRENT_ROLE语法(提交 45b98057)
- 添加了
- PostgreSQL 10
- PostgreSQL 9.5
- 添加了
ALTER SEQUENCE ... OWNER TO { CURRENT_USER | SESSION_USER }语法(提交 31eae602)
- 添加了
- PostgreSQL 9.2
- 添加了
ALTER SEQUENCE IF EXISTS ...语法(提交 b8a91d9d)
- 添加了
- PostgreSQL 8.4
- PostgreSQL 8.3
- 添加了
ALTER SEQUENCE ... RENAME TO ...语法(提交 a5589813)
- 添加了
- PostgreSQL 8.2
- 添加了
ALTER SEQUENCE ... OWNED BY ...语法(提交 2b2a5072)
- 添加了
- PostgreSQL 8.1
- 添加了
ALTER SEQUENCE ... SET SCHEMA ...语法(提交 35508d1c)
- 添加了
- PostgreSQL 7.4
- 已添加(提交 5f65225f)
示例
ALTER SEQUENCE 的基本用法示例
postgres=# ALTER SEQUENCE foo_id_seq RENAME TO bar_id_seq; ALTER SEQUENCE
更改序列数据类型
postgres=# ALTER SEQUENCE bar_id_seq AS integer; ALTER SEQUENCE
如果序列的当前值超过了新数据类型的最大值,则无法更改数据类型
postgres=# CREATE SEQUENCE type_test_seq AS bigint; CREATE SEQUENCE postgres=# ALTER SEQUENCE type_test_seq RESTART 32768; ALTER SEQUENCE postgres=# ALTER SEQUENCE type_test_seq AS smallint; ERROR: RESTART value (32768) cannot be greater than MAXVALUE (32767)
参考资料
- PostgreSQL 文档: ALTER SEQUENCE
