📜  PostgreSQL – 身份列(1)

📅  最后修改于: 2023-12-03 14:45:35.519000             🧑  作者: Mango

PostgreSQL – 身份列

身份列(Identity Column)是 PostgreSQL 数据库中的一种列类型,可用于自动生成唯一标识符,以确保表中每一行都具有唯一的标识符。

创建身份列

在 PostgreSQL 中,可以使用以下语法创建身份列:

CREATE TABLE table_name (
    column_name data_type GENERATED ALWAYS AS IDENTITY
    (START WITH start_value INCREMENT BY increment_value
    [ MINVALUE min_value | NO MINVALUE ]
    [ MAXVALUE max_value | NO MAXVALUE ]
    [ CYCLE | NO CYCLE ] )
)

其中,table_name 是要创建的表名,column_name 是要创建的身份列的名称,data_type 是身份列的数据类型(通常使用 bigint),start_value 是起始值,increment_value 是增量值,min_valuemax_value 是身份列可以取得的最小值和最大值。

例如,要创建一个名为 users 的表,其中包含一个身份列 id,其起始值为 1,每次增加 1,可以使用以下语法:

CREATE TABLE users (
    id bigint GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1),
    name text,
    age integer
);
插入数据

插入数据时,可以不指定身份列的值,PostgreSQL 会自动生成唯一的标识符。

例如,要向上面创建的 users 表中插入一行数据,可以使用以下语法:

INSERT INTO users (name, age) VALUES ('Alice', 25);
修改身份列属性

在创建表后,还可以使用 ALTER TABLE 语句修改身份列的属性。

例如,要将上述 users 表中的 id 列的起始值改为 100,可以使用以下语法:

ALTER TABLE users ALTER COLUMN id RESTART WITH 100;
小结

身份列是 PostgreSQL 数据库中一种非常有用的特性,可用于自动生成唯一标识符,从而确保表中每一行都具有唯一的标识符。通过使用身份列,开发人员可以更加轻松地管理数据库表。