postgersql 定义序列
时间: 2023-08-22 14:08:59 浏览: 42
在 PostgreSQL 中,序列是一种特殊的数据库对象,它可以用来生成自增的整数值,常用于为主键字段生成唯一的标识符。要定义一个序列,可以使用 CREATE SEQUENCE 命令,具体语法如下:
```sql
CREATE SEQUENCE sequence_name
[ INCREMENT [ BY ] increment ]
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
[ START [ WITH ] start ]
[ CACHE cache_number | NO CACHE ]
[ CYCLE | NO CYCLE ];
```
其中,各参数的含义如下:
- sequence_name:序列的名称。
- INCREMENT BY:每次递增的值,默认为1。
- MINVALUE:序列的最小值,默认为1。
- MAXVALUE:序列的最大值,默认为9223372036854775807。
- START WITH:序列的起始值,默认为1。
- CACHE:序列的缓存大小,默认为1。
- CYCLE:当序列达到最大值时,是否循环。如果指定了 CYCLE,则当序列达到 MAXVALUE 时,会重新从 MINVALUE 开始递增。如果指定了 NO CYCLE,则当序列达到 MAXVALUE 时,会停止递增。
例如,创建一个名称为 id_seq 的序列,起始值为 1,每次递增 1:
```sql
CREATE SEQUENCE id_seq START 1 INCREMENT 1;
```
定义好序列之后,可以在表的定义中使用它来生成主键值,例如:
```sql
CREATE TABLE my_table (
id integer NOT NULL DEFAULT nextval('id_seq'::regclass) PRIMARY KEY,
...
);
```
其中,nextval('id_seq'::regclass) 表示获取序列 id_seq 的下一个值作为主键值。
需要注意的是,如果要删除一个序列,可以使用 DROP SEQUENCE 命令,例如:
```sql
DROP SEQUENCE id_seq;
```
以上就是在 PostgreSQL 中定义序列的方法。