PostgreSQL AUTO INCREMENT 学习笔记
在 PostgreSQL 中,通过使用序列(sequence)和自增字段(identity)来实现自增。其中,序列是生成自增数字的一种特殊对象。
序列(sequence)
创建序列
创建序列可以使用如下的 SQL 语句:
sqlCopy CodeCREATE SEQUENCE sequence_name
START WITH start_value
INCREMENT BY increment_value
MAXVALUE max_value
MINVALUE min_value
CACHE cache_value;
其中,
sequence_name
是序列的名字;start_value
是序列的起始值,默认为 1;increment_value
是序列的增量,默认为 1;max_value
是序列的最大值,默认为 9223372036854775807;min_value
是序列的最小值,默认为 1;cache_value
是序列每次缓存的数目,可以提高性能,默认为 1。
使用序列
使用序列可以通过如下方式获取自增数字:
sqlCopy CodeSELECT nextval('sequence_name');
其中,sequence_name
是序列的名字。
删除序列
删除序列可以使用如下的 SQL 语句:
sqlCopy CodeDROP SEQUENCE sequence_name;
其中,sequence_name
是要删除的序列的名字。
自增字段(identity)
自增字段(identity)是一种特殊的列类型,它可以自动生成唯一的自增数字。
创建自增字段
创建自增字段可以使用如下的 SQL 语句:
sqlCopy CodeCREATE TABLE table_name (
column_name SERIAL PRIMARY KEY,
other_columns other_column_types
);
其中,column_name
是自增字段的名字,SERIAL
类型会自动生成序列并关联到该列。PRIMARY KEY
关键字表示该列是主键。
插入数据
插入数据时,自增字段的值会自动递增,无需手动指定。例如:
sqlCopy CodeINSERT INTO table_name (other_columns) VALUES (values);
删除自增字段
删除自增字段可以使用如下的 SQL 语句:
sqlCopy CodeALTER TABLE table_name DROP COLUMN column_name;
其中,table_name
是要删除自增字段的表的名字,column_name
是要删除的自增字段的名字。
实例
下面是一个使用序列和自增字段的实例:
创建序列
sqlCopy CodeCREATE SEQUENCE my_sequence START WITH 1 INCREMENT BY 1 MAXVALUE 1000 CACHE 10;
创建表
sqlCopy CodeCREATE TABLE my_table (
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);
插入数据
sqlCopy CodeINSERT INTO my_table (name) VALUES ('Alice');
INSERT INTO my_table (name) VALUES ('Bob');
INSERT INTO my_table (name) VALUES ('Charlie');
查询数据
sqlCopy CodeSELECT * FROM my_table;
输出结果为:
Copy Code id | name
----+---------
1 | Alice
2 | Bob
3 | Charlie
(3 rows)
删除自增字段
sqlCopy CodeALTER TABLE my_table DROP COLUMN id;
删除序列
sqlCopy CodeDROP SEQUENCE my_sequence;