PostgreSQL自增的ID作为主键 方法

代码片段 admin 55℃

在PostgreSQL中,如果您希望为表创建一个自增的ID作为主键,可以使用SERIAL类型或者使用自增字段与触发器。以下是两种方法的示例:

方法1:使用SERIAL类型

  1. 创建表时,在主键列上使用SERIAL类型:
sql

CREATE TABLE my_table (      id SERIAL PRIMARY KEY,      name VARCHAR(50)  );
  1. 插入数据时,不需要指定ID值,PostgreSQL会自动为ID列生成一个唯一的自增值:
sql

INSERT INTO my_table (name) VALUES ('John Doe');
  1. 您可以使用SELECT currval('my_table_id_seq')来获取最新的自增值,其中my_table_id_seq是序列名称。

方法2:使用自增字段与触发器

  1. 创建表时,不使用SERIAL类型,而是创建一个自增字段和一个触发器:
sql

CREATE TABLE my_table (      id INT PRIMARY KEY,      name VARCHAR(50),      CONSTRAINT check_id CHECK (id > 0)  );
  1. 创建一个序列和一个触发器函数来自动为ID列生成自增值:
sql

CREATE SEQUENCE my_table_id_seq;  CREATE OR REPLACE FUNCTION auto_increment_id() RETURNS TRIGGER AS $$  BEGIN      NEW.id = nextval('my_table_id_seq');      RETURN NEW;  END;   $$ LANGUAGE plpgsql;
  1. 创建一个触发器,将触发器函数与INSERT事件关联起来:
sql

CREATE TRIGGER trigger_auto_increment_id BEFORE INSERT ON my_table FOR EACH ROW EXECUTE FUNCTION auto_increment_id();
  1. 插入数据时,不需要指定ID值,触发器会自动为ID列生成一个唯一的自增值:
sql

INSERT INTO my_table (name) VALUES ('John Doe');
  1. 您可以使用SELECT nextval('my_table_id_seq')来获取下一个自增值。

转载请注明:我的经验分享 » PostgreSQL自增的ID作为主键 方法

喜欢 (0)or分享 (0)