PostgreSQL 序列使用
数据库中主键的生成一般是通过序列来生成,PG的序列知识主要罗列如下:
如何找到序列的名称:用pgadmin打开当前所用数据库,在schemas->sequences下找到相关的序列,然后SELECTnextval('im_indicator_results_seq');查看当前的序列号,在去相关的表中查看已有的最大序列号,如:selectmax(result_id) from im_indicator_results;,最后设置当前序列号为最大序列号SELECTsetval('im_indicator_results_seq', 5288);
方法a:直接在表中指定字段类型是 SERIAL 类型就一了
CREATE TABLE person ( id SERIAL, name TEXT );
CREATE SEQUENCE person_id_seq; CREATE TABLE person ( id INT4 NOT NULL DEFAULT nextval('person_id_seq'), name TEXT ); SELECT currval('person_id_seq') ; SELECT nextval('person_id_seq') ; select last_value from person_id_seq; select setval(seq_name,new_seq_value);
SELECT setval('foo', 42); --下次nextval将返回43
SELECT setval('foo', 42, false); --下次nextval将返回42
drop table table_name;
drop sequence seq_name;
a.currval取得的是当前会话的序列值,在当前会话中该值不会因为其他会话取了nextval而变化。会变化的是全局的last_value值,并且当前会话中如果没有读过nextval值时直接读currval是会报错的。
b.对于序列是由建表时指定serial时创建时,删除该表的同时,对应的序列也会被删除。
c.表主键数据可以用跟表相关的序列,也可以用其他序列,但不推荐,只是PG默认它没错。
d.为使多用户并发下同一个序列取值不会重复,nextval是不会rollback的,不过可以使用setval重置
PostgreSQL 序列使用的更多相关文章
- PostgreSQL 序列
PostgreSQL 中的序列是一个数据库对象,本质上是一个自增器.因此,序列在其他同类型数据库软件中以 autoincrment 值的形式存在.在一张表需要非随机,唯一标实符的场景下,Sequenc ...
- PostgreSql 使用自定义序列(Sequence)向表插入数据
最近公司使用到了PostgreSql,哈哈,这个SQL之前基本上没有用过,既然公司使用到了,那就学习一下吧,记一篇小笔记: 什么是PostgreSql:https://www.postgresql.o ...
- PostgreSQL SERIAL创建自增列
PostgreSQL SERIAL创建自增列 本文我们介绍PostgreSQL SERIAL,并展示如何使用serial类型创建表自增列. PostgreSQL SERIAL伪类型 PostgreSQ ...
- id 生成器介绍
背景介绍 在一般的业务场景中, 初始的时候简单的自增数(比如MySQL 自增键)就可以很好的满足需求, 不过随着业务的发展和驱动, 尤其是在分布式的场景中, 如何生成全局的唯一 id 便成了需要慎重考 ...
- Spring框架之jdbc源码完全解析
Spring框架之jdbc源码完全解析 Spring JDBC抽象框架所带来的价值将在以下几个方面得以体现: 1.指定数据库连接参数 2.打开数据库连接 3.声明SQL语句 4.预编译并执行SQL语句 ...
- postgreSQL 自增需要使用序列
postgreSQL 自增需要使用序列 1.使用SERIAL CREATE TABLE users ( id SERIAL4 primary key , name character varying, ...
- PostgreSQL 设置主键的序列值
1. 问题的提出 PostgreSQL定义TABLE时,主键的字段类型可以设定为自增类型serial,即插入每条记录时,主键的值自动加1.但是,当插入数据的时候指定了具体的主键值,例如主键值从0到50 ...
- postgreSqL的序列sequence
PostgreSQL uses sequences to generate values for serial columns and serial columns are generally wha ...
- PostgreSQL之Sequence序列(转)
本文转载自:https://blog.csdn.net/omelon1/article/details/78798961 Sequence序列 Sequence是一种自动增加的数字序列,一般作为行或者 ...
随机推荐
- sbt公布assembly解决jar包冲突 deduplicate: different file contents found in the following
一个.问题定义 近期使用sbt战斗assembly发生故障时,包,在package什么时候,发生jar包冲突/文件冲突,两个相同class来自不同jar包classpath内心冲突. 有关详细信息:我 ...
- 我的Android 4 学习系列之开始入手:配置开发环境与理解Hello World!
目录 如何安装Android SDK.创建开发环境和调试项目 移动设计中一些注意事项 使用Android虚拟设备.模拟器和其他开发工具 如何安装Android SDK.创建开发环境和调试项目 下载和安 ...
- 【转】视差滚动(Parallax Scrolling)效果的原理和实现
原文:http://www.cnblogs.com/JoannaQ/archive/2013/02/08/2909111.html 视差滚动(Parallax Scrolling)是指让多层背景以不同 ...
- Javascript多线程引擎(五)
Javascript多线程引擎(五)之异常处理 C语言没有提供一个像Java一样的异常处理机制, 这就带来了一个问题, 对于一个子函数中发生异常后, 需要在父函数调用子函数的位置进行Check, 如果 ...
- 为ASP.NET MVC应用程序读取相关数据
为ASP.NET MVC应用程序读取相关数据 2014-05-08 18:24 by Bce, 299 阅读, 0 评论, 收藏, 编辑 这是微软官方教程Getting Started with En ...
- 推荐几个JSON工具
JSON查看 http://jsonviewer.codeplex.com/ JSON转类(非常好使) http://jsonclassgenerator.codeplex.com https://g ...
- Castle.DynamicProxy Part 1: ClassProxy
1.Castle中代理对象的分类 总的来说,代理对象大概可以分为2大类: 1.继承类型的代理对象 一类是继承类型的代理类.即:有一个类A,它的代理类是B.B是继承自A的.调用代理类B中的方法时,可以通 ...
- [转]How to build a data storage and VM Server using comodity hardware and free software
Source: http://learnandremember.blogspot.jp/2010_01_01_archive.html Requisites: 1) RAID protection f ...
- iOS关于应用内分享
iOS7.0增加了AirDrop功能,可知在未来,手机信息资源的直接分享会越来越重要.而我们在iPhone系统短信点击照片会看到右上角的分享按钮,点击可以弹出一系列的应用菜单,允许用户把这张图片分享到 ...
- 项目Splash页面的开发与设计
项目Splash页面的开发与设计 首先建立一个安卓的项目,然后修改manifest.xml文件,修改应用程序的logo和显示名称,效果图如下: 对应的代码如下: 1 <?xml version= ...