• 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 );
    View Code

     如果表已经建好,并且表里已经有了数据,缺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)
    View Code

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


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

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

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

  • 相关阅读:
    java入门经验分享——记面向对象先导课程学习感想
    HashCode方法整理
    Java中vector用法整理
    Java中Iterator用法整理
    org.springframework.data.redis.RedisConnectionFailureException
    dubbo服务启动正常,但是访问不到服务,在监测中心也找不服务的原因之一
    【转】Elasticsearch Java Rest Client 指南
    【转】mybatis根据mapper执行sql的过程
    转:IDEA异常解决: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)
    ES的常用查询与聚合
  • 原文地址:https://www.cnblogs.com/CDLinXi/p/10490733.html
Copyright © 2020-2023  润新知