psql 关于主键自增的问题
在psql中往往我们需要设置一个自增的主键id字段,psql中不像SQL Server那样点选 打钩傻瓜式就能设置好的,是需要创建序列的:CREATE SEQUENCE,关键字SEQUENCE。
我们先看看创建过后的结果:
(用的Navicat工具)
我们可以看到设置自增后字段默认:nextval('bid_id_seq'::regclass) ,bid为我的表名。
故可以译为:下一个值为此表下此字段的注册自增序列。
如何创建id自增字段?
答:建表时使用“serial”关键字,“PRIMARY KEY”关键字为设置主键。故设置主键自增id方式如下:
1 create table test_b 2 ( 3 id serial PRIMARY KEY, //主键并自增 4 name character varying(64) 5 );
如果表已经建好,并且表里已经有了数据,缺id自增字段?
答:先手工增加id字段,再去创建SEQUENCE序列,建立test_b_id_seq,最后设置字段开始自增的id。
如表已经建好,用下面的语句即可生成自动增长序列:
1 --先创建SEQUENCE 2 CREATE SEQUENCE test_b_id_seq 3 START WITH 1 //从1开始 4 INCREMENT BY 1 //自增空间为1 5 NO MINVALUE 6 NO MAXVALUE 7 CACHE 1; 8 9 --建立自增test_b_id_seq 10 alter table test_b alter column id set default nextval('test_b_id_seq'); 11 12 --设置字段开始自增的id 13 SELECT setval('test_b_id_seq', (SELECT MAX(id) FROM test_b)+1)
以上是在Navicat工具里操作的,当然还可以用大象客户端pgAdmin。建议:不管用不用id字段,建表时可以加上自增id主键,避免后期麻烦。(傻屌网友陈二狗遇到过坑的)
最后本街帅附送一个语句,清空表数据 让自增id从1开始:
1 TRUNCATE TABLE test_b;//清空表数据 2 ALTER SEQUENCE test_b_id_seq RESTART WITH 1;//重置自增id从1开始
以上为本帅工作中用psql遇到过的操作,欢迎评论转载,转载请务必留下原文地址 便于学习分享~~~
前尘投进河里 随潮浪冲洗去再别觅寻
流逝回忆 回望如暮色般遥远
河畔那钟声却又很近~~~