psql 关于主键自增的问题
在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 关于主键自增的问题的更多相关文章
- oracle主键自增
oracle主键自增 1建立数据表 create table Test_Increase( userid number(10) primary key, /*主键,自动增加*/ ...
- for循环往Oracle中插入n条数据,主键自增
1.主键自增实现方法:http://www.cnblogs.com/Donnnnnn/p/5959871.html 2.for循环往Oracle中插入n条数据 BEGIN .. loop insert ...
- erlang mnesia数据库设置主键自增
Mnesia是erlang/otp自带的分布式数据库管理系统.mnesia配合erlang的实现近乎理想,但在实际使用当中差强人意,总会有一些不足.mnesia数据表没有主键自增的功能,但在mnesi ...
- EF 主键自增、级联删除
一.主键自增 1.设置数据库中,主键自增 2.设置VS中Model1.edmx
- com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'portal.hibernate_sequence' doesn't exist, 谈谈主键自增的方式
最近几天几天做项目用到了Spring Data JPA,确实是个好东西,省了很多力气.但是由于刚开始用,也遇到不少头疼的问题,如下,调用JpaRepository接口的save方法保存一个对象到数据库 ...
- oracle 主键自增 设置----杜恩德
<div id="topicList"> <div class="forFlow"> <div class = "pos ...
- mysql数据库单表只有一个主键自增id字段,ibatis实现id自增
mysql数据库单表只有一个主键自增id字段,ibatis实现id自增 <insert id="autoid"> insert into user_id ...
- postgresql + mybatis insert主键自增方法
postgresql + mybatis插入记录时设置自增主键方法: 一.数据库设置主键自增 1.数据库中id字段选择serial4类型后,会在默认值中生成 nextval('app_id_seq': ...
- 关于oracle设置主键自增的问题
关于orcale设置主键自增的问题 关于主键Oracle中并没有提供一个直接的语句设置,对于这个oralce一般都是用序列和触发器来实现 一下又两种方法来实现 一 ,不使用触发器 创建序列: crea ...
随机推荐
- 输入流IS和输出流OS学习总结
1.我们编写的程序,除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身的数据发送到外界,比如我们编写的程序想读取一个文本文件, 又或者是我们想将程序的一些数据写到一个文件中,这时我们就要 ...
- HTTP认证方式详解
HTTP请求报头: Authorization HTTP响应报头: WWW-Authenticate HTTP认证 基于 质询 /回应( challenge/response)的认证模式. ◆ ...
- Java 8 基础API的一些小的该进
Java8是一个较大改变的版本,包含了API和库方面的修正,它还对我们常用的API进行很多微小的调整, 下面我会带你了解字符串.集合.注解等新方法. 字符串 经常会遇到这样一种情况, 需要将一组字符串 ...
- Intent传值的学习
今天学习了Intent传值的过程,有点安卓编程经验的都知道,Intent可以实现页面的跳转,可以从一个activity跳转到另一个activity,这个名义上说是界面跳转,其实这句话现在觉得说的很不严 ...
- JavaScript 设计模式之----单体(单例)模式
设计模式之--单体(单例)模式 1.介绍 从本章开始,我们会逐步介绍在JavaScript里使用的各种设计模式实现,在这里我不会过多地介绍模式本身的理论,而只会关注实现.OK,正式开始. 在传统开发工 ...
- Android UI性能优化实战 识别绘制中的性能问题
转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45556391: 本文出自:[张鸿洋的博客] 1.概述 2015年初google ...
- 用git工作的流程
1. clone仓库: git clone git@github.com:test/test.git 2. 检出远程的develop分支 git checkout -b dev ...
- APP内置react 应用与APP的交互问题
一.内置的H5应用唤起(返回)app 可以用 intent url 来唤起,但要求 webview 实现 shouldOverrideUrlLoading() ,解析 uri,找到对应的 activi ...
- MAC下Intellij IDEA常用快捷键
alt+f7 : 查找在哪里使用 command+alt+f7 : 这个是查找选中的字符在工程中出现的地方,可以不是方法变量类等,这个和上面的有区别的 command+F7 : 可以查询当前元素在当前 ...
- dqname_widnows.go
package nsqd // On Windows, file names cannot contain colons. func getBackendName(topicName, channel ...