• 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遇到过的操作,欢迎评论转载,转载请务必留下原文地址 便于学习分享~~~

  • 相关阅读:
    zabbix邮件报警功能的验证
    linux下拷贝命令中的文件过滤操作记录
    Docker容器数据卷-Volume小结
    Elasticsearch集群监控指标学习
    MySQL 更换MyISAM存储引擎为Innodb的操作记录
    MySQL 占用过高CPU时的优化手段
    MySQL 连接数设置操作(Too many connections)及设置md5值的加密密码
    Android Studio aidl文件路径自定义问题
    Android资源混淆 + 混淆忽略 .so库
    Android Studio 换主题(Material Theme..)
  • 原文地址:https://www.cnblogs.com/CDLinXi/p/10490733.html
Copyright © 2020-2023  润新知