经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » SQL语言 » 查看文章
psql 关于主键自增的问题
来源:cnblogs  作者:复城大师兄  时间:2019/3/8 8:55:24  对本文有异议

在psql中往往我们需要设置一个自增的主键id字段,psql中不像SQL Server那样点选 打钩傻瓜式就能设置好的,是需要创建序列的:CREATE SEQUENCE,关键字SEQUENCE。

我们先看看创建过后的结果:

(用的Navicat工具)

我们可以看到设置自增后字段默认:nextval('bid_id_seq'::regclass) ,bid为我的表名。

故可以译为:下一个值为此表下此字段的注册自增序列。


 

如何创建id自增字段?

答:建表时使用“serial”关键字,“PRIMARY KEY”关键字为设置主键。故设置主键自增id方式如下: 

  
  1. 1 create table test_b
  2. 2 (
  3. 3 id serial PRIMARY KEY, //主键并自增
  4. 4 name character varying(64)
  5. 5 );
View Code

 

 如果表已经建好,并且表里已经有了数据,缺id自增字段?

  答:先手工增加id字段,再去创建SEQUENCE序列,建立test_b_id_seq,最后设置字段开始自增的id。

  如表已经建好,用下面的语句即可生成自动增长序列:   

  
  1. 1 --先创建SEQUENCE
  2. 2 CREATE SEQUENCE test_b_id_seq
  3. 3 START WITH 1 //从1开始
  4. 4 INCREMENT BY 1 //自增空间为1
  5. 5 NO MINVALUE
  6. 6 NO MAXVALUE
  7. 7 CACHE 1;
  8. 8
  9. 9 --建立自增test_b_id_seq
  10. 10 alter table test_b alter column id set default nextval('test_b_id_seq');
  11. 11
  12. 12 --设置字段开始自增的id
  13. 13 SELECT setval('test_b_id_seq', (SELECT MAX(id) FROM test_b)+1)
View Code

 

 以上是在Navicat工具里操作的,当然还可以用大象客户端pgAdmin。建议:不管用不用id字段,建表时可以加上自增id主键,避免后期麻烦。(傻屌网友陈二狗遇到过坑的)


 

最后本街帅附送一个语句,清空表数据 让自增id从1开始:  

  
  1. 1 TRUNCATE TABLE test_b;//清空表数据
  2. 2 ALTER SEQUENCE test_b_id_seq RESTART WITH 1;//重置自增id从1开始
View Code

 

以上为本帅工作中用psql遇到过的操作,欢迎评论转载,转载请务必留下原文地址 便于学习分享~~~

原文链接:http://www.cnblogs.com/CDLinXi/p/10490733.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号