
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_classon 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))欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)