如何在postgresql中添加id自增列

如何在postgresql中添加id自增列,第1张

使用 serial 来处理。

CREATE TABLE test_create_tab2 (

id SERIAL,

val VARCHAR(10)

)

Test=# CREATE TABLE test_create_tab2 (

Test(# id SERIAL,

Test(# val VARCHAR(10)

Test(# )

注意: CREATE TABLE 将为 serial 字段 "test_create_tab2.id" 创建隐含序列 "test_create_tab2_id_seq"

CREATE TABLE

Test=# \d test_create_tab2

资料表 "public.test_create_tab2"

栏位 | 型别 | 修饰词

------+-----------------------+-------------------------------------------------

-------

id | integer | 非空 缺省 nextval('test_create_tab2_id_seq'::regclass)

val | character varying(10) |

Test=# INSERT INTO test_create_tab2(val) VALUES ('NO id')

INSERT 0 1

Test=# INSERT INTO test_create_tab2(val) VALUES ('NO id 2')

INSERT 0 1

Test=# select * from test_create_tab2

id | val

----+---------

1 | NO id

2 | NO id 2

(2 行记录)

Test=# select lastval()

lastval

---------

2

(1 行记录)

最简单的方式:在创建表时使用serial类型(4字节整数),或者bigserial类型(8字节整数);其实际上是创建一个序列,然后设置此字段值为所创建的序列的下一个值(用法与Oracle中类似)。

直接使用serail, bigserial的局限在于:不能指定序列的初始值和步长

PostgreSQL不像SQL Server一样有identity关键字可以用来指定字段自增。但是它有序列值产生器可以使用,并且在数据字段定义时可以指定默认值为一个表达式,这样我们就可以使用序列值来作实现字段值自增。

步骤:

创建一个序列值

create sequence id_sequence increment 1 start 1

id_sequence为序列值名称,increment为步长默认为1,start为初始值,默认为1

在字段定义时,指定默认值为获取序列值(用nextval函数, 参数为序列值名称的字符串)

create table mytest (id integer not null default nextval('id_sequence'), txt varchar(100))


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11710357.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存