PostgreSQL 序列

PostgreSQL 中的序列是一个数据库对象,本质上是一个自增器。因此,序列在其他同类型数据库软件中以 autoincrment 值的形式存在。在一张表需要非随机,唯一标实符的场景下,Sequence 非常有用。

创建语法:

CREATE SEQUENCE sequencename

[ INCREMENT increment ]        -- 自增数,默认是 1

[ MINVALUE minvalue ]      -- 最小值

[ MAXVALUE maxvalue ]      -- 最大值

[ START start ]                -- 设置起始值

[ CACHE cache ]                -- 是否预先缓存

[ CYCLE ]                   -- 是否到达最大值的时候,重新返回到最小值

Sequence 使用的是整型数值,因此它的取值范围是 [-2147483647, 2147483647] 之间;

Sequence 的函数

Sequence 是不能被直接访问到的;他们需要通过 PostgreSQL 中的相关函数来操作他们。Sequence 的函数使用:

nextval(‘sequence_name‘): 将序列当前值设置成递增后的值,并返回;

currval(‘sequence_name‘): 返回序列当前值;

setval(‘sequence_name‘, n, b=true): 设置当前值;b 默认设置 true,下一次调用 nextval() 时,直接返回 n,如果设置 false,则返回 n+increment:

当数据库表序列插入冲突时,可使用下面的方法:

SELECT setval(‘your_table_id_seq‘, (SELECT MAX(id) FROM your_table)+1);

SELECT setval(‘your_table_id_seq‘, (SELECT MAX(id) FROM your_table),false);注意:获取表最大值的语句要加()才行。

来自为知笔记(Wiz)

时间: 2024-08-30 04:09:14

PostgreSQL 序列的相关文章

PostgreSQL 序列使用

数据库中主键的生成一般是通过序列来生成,PG的序列知识主要罗列如下: 如何找到序列的名称:用pgadmin打开当前所用数据库,在schemas->sequences下找到相关的序列,然后SELECTnextval('im_indicator_results_seq');查看当前的序列号,在去相关的表中查看已有的最大序列号,如:selectmax(result_id) from im_indicator_results;,最后设置当前序列号为最大序列号SELECTsetval('im_indica

postgreSqL的序列sequence

PostgreSQL uses sequences to generate values for serial columns and serial columns are generally what is used for "auto-incrementing" columns in PostgreSQL. Sequences have names and are, in general, independent of any particular table so you cou

PostgreSQL数据库内核分析 笔记(这本书没有怎么很好的看,主要就是一些数据结构、概念和流程的文字介绍)

PostgreSQL数据库内核分析 跳转至: 导航. 搜索 目录 1系统概述 2体系结构 3存储管理 4索引 5查询编译 6查询执行 7事务处理与并发控制 8数据库安全 9附录A 用Eclipse开发和调试 系统概述 初始化数据库:./initdb --no-locale -D ../data ./pg_ctl start -D ../data 数据库命令:initdb createuser dropuser createdb dropdb pg_dump pg_restore pg_ctl v

PostgreSQL高可用性、负载均衡、复制与集群方案介绍

目录[-] 一.高可用性.负载均衡.复制的几个方案比较: 二.多节点集群方案比较 9.3官方文档(中文):http://58.58.27.50:8079/doc/html/9.3.1_zh/high-availability.html 复制.集群和连接池: https://wiki.postgresql.org/wiki/Replication,_Clustering,_and_Connection_Pooling 集群方案功能列表: http://blog.osdba.net/46.html

PostgreSQL即学即用(第2版)pdf

下载地址: 网盘下载 内容简介 · · · · · · 本书将帮助你理解和使用PostgreSQL 这一开源数据库系统.你不仅会学到版本9.2.9.3 和9.4中的企业级特性,还会发现PostgreSQL 不只是个数据库系统,也是一个出色的应用平台.本书通过示例展示了如何实现在其他数据库中难以或无法完成的任务.这一版内容覆盖了LATERAL 查询.增强的JSON 支持.物化视图和其他关键话题. 作者简介  · · · · · · Regina Obe 是数据库咨询公司Paragon的负责人之一,

PostgreSQL Replication之扩展与BDR

在这一章中,将向您介绍一个全新的技术,成为BDR.双向复制(BDR),在PostgreSQL的世界里,它绝对是一颗冉冉升起的新星.在不久的将来,许多新的东西将会被看到,并且人们可以期待一个蓬勃发展的项目. 本章将是关于如下这些主题: ?理解 BDR 复制概念 ?安装 BDR ?设置一个简单的集群 ?修改集群和故障转移 ?了解 BDR 的性能 在挖掘所有的技术细节之前,理解 BDR 方面的基本技术是非常重要的.           理解 BDR 复制概念 过去,在9.0被引进之前,人们不得不使用S

关于postgresql——常用操作指令

该文章转载自http://blog.chinaunix.net/uid-22920230-id-3493064.html 创建数据库 CREATE DATABASE test WITH OWNER = postgres ENCODING = 'UTF8'; 进入控制台方法,在postgreSQL的安装目的bin下执行命令: psql 数据库名,  例: /usr/local/pgsql/bin/psql mydb 指定host.用户名和数据库的话,如: /usr/local/pgsql/bin/

PostgreSQL的并发控制

9.3中文文档:http://58.58.27.50:8079/doc/html/9.3.1_zh/mvcc.html 参考博客:中文:http://www.zlovezl.cn/articles/postgresql-concurrency-with-mvcc/ 英文:https://devcenter.heroku.com/articles/postgresql-concurrency 本文描述PostgreSQL数据库系统在多个会话试图同时访问同一数据时的表现.并发控制的目标是为所有会话提

Oracle实现POSTGRESQL的generate_series功能

PostgreSQL 有生成序列的函数,能够方便的进行造数据.这里我用ORACLE实现了PGSQL的generate_series函数功能.POSTGRESQL. t_girl=# select * from generate_series(1,10); generate_series ----------------- 1 2 3 4 5 6 7 8 9 10 (10 行记录) 时间:1.290 ms t_girl=# select * from generate_series(1,10,2)