PostgreSQL设置主键id自增长

PostgreSQL设置主键id自增长,第1张

PostgreSQL中让主键自增长可先建立一个对应表的sequence

CREATE SEQUENCE test_id_seq

START WITH 1

INCREMENT BY 1

NO MINVALUE

NO MAXVALUE

CACHE 1

其中START是从数字几开始,INCREMENT BY是一次增长几个数字,NO MINVALUE是没有最小值,NO MAXVALUE是没有最大值;

然后修改表id字段

alter table test alter column id set default nextval('test_id_seq')

也可以在建表的时候使用:

"id" int4 DEFAULT nextval('t_ordercenter_info_history_id_seq'::regclass) NOT NULL

select pg_constraint.conname as pk_name from pg_constraint inner join pg_class

on pg_constraint.conrelid = pg_class.oid where pg_class.relname = 'yourtablename' and pg_constraint.contype='p'

这个可以显示yourtablename表的主键

select pg_constraint.conname as pk_name,pg_attribute.attname as colname,pg_type.typname as typename from

pg_constraint inner join pg_class

on pg_constraint.conrelid = pg_class.oid

inner join pg_attribute on pg_attribute.attrelid = pg_class.oid

and pg_attribute.attnum = pg_constraint.conkey[1]

inner join pg_type on pg_type.oid = pg_attribute.atttypid

where pg_class.relname = 'yourtablename'

and pg_constraint.contype='p'

这个可以显示出主键名,和主键关联的字段名,和字段名类型

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/11742091.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存