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

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

(用的Navicat工具)

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

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


如何创建id自增字段?

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

  

 create table test_b
(
id serial PRIMARY KEY, //主键并自增
name character varying(64)
);

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

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

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

  

 --先创建SEQUENCE
CREATE SEQUENCE test_b_id_seq
START WITH 1 //从1开始
INCREMENT BY 1 //自增空间为1
NO MINVALUE
NO MAXVALUE
CACHE 1; --建立自增test_b_id_seq
alter table test_b alter column id set default nextval('test_b_id_seq'); --设置字段开始自增的id
SELECT setval('test_b_id_seq', (SELECT MAX(id) FROM test_b)+1)

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


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

  

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

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

psql 关于主键自增的问题的更多相关文章

  1. oracle主键自增

    oracle主键自增 1建立数据表 create table Test_Increase(            userid number(10) primary key,  /*主键,自动增加*/ ...

  2. for循环往Oracle中插入n条数据,主键自增

    1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...

  3. erlang mnesia数据库设置主键自增

    Mnesia是erlang/otp自带的分布式数据库管理系统.mnesia配合erlang的实现近乎理想,但在实际使用当中差强人意,总会有一些不足.mnesia数据表没有主键自增的功能,但在mnesi ...

  4. EF 主键自增、级联删除

    一.主键自增 1.设置数据库中,主键自增 2.设置VS中Model1.edmx

  5. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'portal.hibernate_sequence' doesn't exist, 谈谈主键自增的方式

    最近几天几天做项目用到了Spring Data JPA,确实是个好东西,省了很多力气.但是由于刚开始用,也遇到不少头疼的问题,如下,调用JpaRepository接口的save方法保存一个对象到数据库 ...

  6. oracle 主键自增 设置----杜恩德

    <div id="topicList"> <div class="forFlow"> <div class = "pos ...

  7. mysql数据库单表只有一个主键自增id字段,ibatis实现id自增

    mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid">        insert into user_id ...

  8. postgresql + mybatis insert主键自增方法

    postgresql + mybatis插入记录时设置自增主键方法: 一.数据库设置主键自增 1.数据库中id字段选择serial4类型后,会在默认值中生成 nextval('app_id_seq': ...

  9. 关于oracle设置主键自增的问题

    关于orcale设置主键自增的问题 关于主键Oracle中并没有提供一个直接的语句设置,对于这个oralce一般都是用序列和触发器来实现 一下又两种方法来实现 一 ,不使用触发器 创建序列: crea ...

随机推荐

  1. SVG的动态之美-搜狗地铁图重构散记

    搜狗地图发布了新版的移动端地铁图,改版初衷是为了用户交互体验的提升以及性能的改善.原版地铁图被用户吐槽最多的是pinch缩放不流畅.无过渡动画.拖拽边界不合理等等,大体上都是交互体验上的问题.实际上原 ...

  2. 导航狗IT周报-2018年05月18日

    原文链接:https://www.daohanggou.cn/2018/05/18/it-weekly-8/ DDoS专题 最近Web安全里的一个热点就是包括阮一峰博客在内的多个教育类IT网站被DDo ...

  3. 自动化运维工具sshd,expect,pssh,rsync详解

    ssh secure shell,安全的远程登录:openssh和dropbear都是它的开源实现,ssh协议有v1和v2俩个版本,现在使用的都是v2版,v1已经不安全了:ssh基于DH算法做密钥交换 ...

  4. elementui左侧菜单栏刷新后还是原来的状态

    <template> <div id="leftMenuList"> <el-row> <el-col :span="24&qu ...

  5. app后端设计(6)-- LBS

    在LBS的应用中,一个基本的需求是查找附近的用户,现在有两种做法: 1. 使用mysql的空间数据库,具体做法参考:http://blog.sina.com.cn/s/blog_a48af8c0010 ...

  6. 嘿嘿嘿,开始自学mysql

    开始学习mysql了,作为非计算机专业学生,必须需要一个地方来给自己的知识进行一些记录和总结. 一SQL语句 数据库是不认识java语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识的语言S ...

  7. 从零开始学习 Docker

      这篇文章是我学习 Docker 的记录,大部分内容摘抄自 <<Docker - 从入门到实践>> 一书,并非本人原创.学习过程中整理成适合我自己的笔记,其中也包含了我自己的 ...

  8. HashMap和LinkedHashMap的区别

    参考:https://blog.csdn.net/a822631129/article/details/78520111 java为数据结构中的映射定义了一个接口java.util.Map;它有四个实 ...

  9. 权限系统与RBAC模型概述[绝对经典]

    0. 前言 一年前,我负责的一个项目中需要权限管理.当时凭着自己的逻辑设计出了一套权限管理模型,基本原理与RBAC非常相似,只是过于简陋.当时google了一些权限管理的资料,从中了解到早就有了RBA ...

  10. appium----【已解决】【Mac】ANDROID_HOME的环境变量配置

    在搭建appium的环境时,提示Android_home的环境没有配置,经过一会的奋战终于解决,再次记录下解决方式. 1.安装android-sdk-macosx 下载路径:http://down.t ...