PostgreSQL创建表并设置主键自增

本文详细介绍了在PostgreSQL数据库中实现主键自增的三种方法,包括直接使用SERIAL类型、创建SEQUENCE并关联到指定字段,以及通过ALTER TABLE语句设置默认值为SEQUENCE的下一个值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里记录一下pg数据库主键自增
MySQL 设置主键自增策略比较简单 只需要创建表的时候使用关键字AUTO_INCREMENT就可以完成主键自增。但是pg数据库不同于mysql,之前试了 SERIAL 结果并不管用。

这里只记录给已创建的表加入主键自增(适用性广些)
说道主键自增就要拆分两部分来说:
一: 主键;
二: 自增策略;

1.首先我们通过快捷方式或者语句方式创建表完毕。
2.接下来我们要创建自增策略(自增策略包括起始值与最大值的设置)

CREATE SEQUENCE “public.“table_user_user_id_seq”
INCREMENT 1
START 1
MINVALUE 1
MAXVALUE 99999999
CACHE 1;

这里可以看到我们创建 Sequence 在哪个模式下呢?在表所在的同一模式下。自增策略名称是什么呢?就是模式后面的 table_user_user_id_seq;
在这里插入图片描述

3.最后我们则可以给想要添加主键自增的表加上我们刚刚创建的主键自增策略

alter tablepublic.“table_user” alter column user_id set default nextval(‘table_user_user_id_seq’);

在这里插入图片描述

创建自增的三种方式

--方法一
create table test_a 
(
  id serial,
  name character varying(128),
  constraint pk_test_a_id primary key( id)
); 

NOTICE:  CREATE TABLE will create implicit sequence "test_a_id_seq" for serial column "test_a.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "pk_test_a_id" for table "test_a"
CREATE TABLE


--方法二
create table test_b
(
  id serial PRIMARY KEY,
  name character varying(128)
); 

NOTICE:  CREATE TABLE will create implicit sequence "test_b_id_seq" for serial column "test_b.id"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "test_b_pkey" for table "test_b"
CREATE TABLE


--方法三
create table test_c 
(
  id integer PRIMARY KEY,
  name character varying(128)
);  
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "test_c_pkey" for table "test_c"
CREATE TABLE


CREATE SEQUENCE test_c_id_seq
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;
    
alter table test_c alter column id set default nextval('test_c_id_seq');


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值