在 PostgreSQL 中,使用序列(Sequence)来实现自动递增的列,而不像一些其他数据库系统使用 AUTO_INCREMENT 关键字。序列是一个数据库对象,生成唯一的数字序列,通常用于为表的主键列生成唯一标识符。

以下是在 PostgreSQL 中创建带有自增列的表的基本步骤:

1. 创建序列:
   CREATE SEQUENCE table_name_column_name_seq;

   其中,table_name 是你的表名,column_name 是自增列的列名。

2. 创建表并使用序列作为默认值:
   CREATE TABLE table_name (
       column_name INTEGER DEFAULT nextval('table_name_column_name_seq') PRIMARY KEY,
       other_columns VARCHAR(255),
       -- 其他列的定义
   );

   在这里,nextval('table_name_column_name_seq') 用于获取序列的下一个值,并将其作为列的默认值。

3. 插入数据:
   INSERT INTO table_name (other_columns) VALUES ('some_value');

   在插入数据时,数据库会自动为自增列生成唯一的值。

4. 查看自增列的值:

   如果需要查看自增列的当前值,可以使用 currval('table_name_column_name_seq'):
   SELECT currval('table_name_column_name_seq');

   如果要获取最后插入行的自增列值,可以使用 RETURNING:
   INSERT INTO table_name (other_columns) VALUES ('another_value') RETURNING column_name;

请注意,为了保持数据的一致性和完整性,通常将自增列设置为表的主键。如果自增列作为主键,每个插入的行都将具有唯一的标识符。

如果你使用的是 PostgreSQL 10 或更高版本,还可以使用 GENERATED ALWAYS AS IDENTITY 语法来定义自增列,这更简洁:
CREATE TABLE table_name (
    column_name SERIAL PRIMARY KEY,
    other_columns VARCHAR(255),
    -- 其他列的定义
);

在上述语法中,SERIAL 关键字会自动创建一个序列并将其与列关联,无需显式创建序列。


转载请注明出处:http://www.zyzy.cn/article/detail/14153/PostgreSQL