一、创建序列

示例

-- SEQUENCE: test_id_seq-- DROP SEQUENCE test_id_seq;CREATE SEQUENCE test_id_seqINCREMENT 1START 1MINVALUE 1MAXVALUE 9223372036854775807CACHE 1;

语法

CREATE SEQUENCE [ IF NOT EXISTS ] sequence_name  [ AS { SMALLINT | INT | BIGINT } ]  [ INCREMENT [ BY ] increment ]  [ MINVALUE minvalue | NO MINVALUE ]   [ MAXVALUE maxvalue | NO MAXVALUE ]  [ START [ WITH ] start ]   [ CACHE cache ]   [ [ NO ] CYCLE ]  [ OWNED BY { table_name.column_name | NONE } ]

说明

在上面的语法中,我们使用了以下参数:

范围 描述
sequence_name sequence_name 不同于类似模式中的任何其他序列、索引、表、视图或外部表。我们可以在CREATE SEQUENCE之后定义序列名称并且IF NOT EXISTS 条件仅在它不存在时才临时生成一个新序列。
[ AS { SMALLINT \ INT \ BIGINT } ] 调节序列的最大值和最小值的序列的数据类型。我们可以定义序列的数据类型,其中支持的数据类型为INT、BIGINT和SMALLINT。如果我们忘记提及数据类型,则将其视为 BIGINT,因为它是 Sequence 的默认数据类型。
[ INCREMENT [ BY ] increment ] 增量描述了值,必须将其添加到现有序列值以生成新值,默认值为 1。此处,正 (+) 数将产生升序,负 (-) 数将产生降序
[ MINVALUE minvalue \ NO MINVALUE ] 如果我们使用NO MINVALUE 和 NO MAXVALUE,则序列将采用默认值。对于升序,最大默认值为Sequence 数据类型最大值默认最小值1。而对于降序序列,最大默认值为-1默认最小值为Sequence 数据类型的最小值
[ MAXVALUE maxvalue \ NO MAXVALUE ][ START [ WITH ] start ] START子句用于定义序列的起始值。并且默认初始值是降序的最大值和升序的最小值
cache 一次可以创建一个值,默认情况下,该序列一次创建一个值,没有缓存。该CACHE参数用于指定的序列号预先分配并存储在存储器中用于较早获得。
CYCLE \ NO CYCLE CYCLE参数允许我们如果达到限制恢复值。在下面的数将是最大值递减序列最小值升序序列。如果我们使用 NO CYCLE,当达到限制时,或者我们正在尝试获取下一个值时,它会在输出中引发错误。该NO CYCLE是默认的,如果我们不定义CYCLE或NO CYCLE
OWNED BY table_name.column_name 最后,使用OWNED BY 参数将表列与序列链接起来。因此,PostgreSQL 会自动丢弃相关序列;如果我们删除表或列。

注意:当我们对表的某列使用SERIAL伪类型时,在后台,PostgreSQL会自动生成一个与该列相关的序列。

更新序列的值

场景:自增id作为key重复的问题

解决方案:

SELECT setval(‘test_id_seq', (SELECT MAX(id) FROM test_table));

即:将序列当前值,更新为表的最大key值

postgresql 序列Sequence相关推荐

  1. PostgreSQL之Sequence序列

    原文地址: PostgreSQL之Sequence序列_Frank_lyn的博客-CSDN博客_pgsql sequence PostgreSQL是一种关系型数据库,和Oracle.MySQL一样被广 ...

  2. PostgreSQL之Sequence序列(转)

    本文转载自:https://blog.csdn.net/omelon1/article/details/78798961 Sequence序列 Sequence是一种自动增加的数字序列,一般作为行或者 ...

  3. Oracle数据库中序列(SEQUENCE)的用法详解

    http://database.51cto.com/art/201108/280742.htm 在Oracle数据库中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其实是序列号生成器,可以为 ...

  4. oracle初始化序列值,如何修改序列(Sequence)的初始值(START WITH)

    Oracle 序列(Sequence)主要用于生成流水号,Oracle EBS系统中是经常用到的.但是,有时需要修改序列初始值(START WITH)时,好多人凭感觉认为:Alter Sequence ...

  5. mysql添加序列触发器_Oracle中使用触发器(trigger)和序列(sequence)模拟实现自增列实例...

    问题:在SQL Server数据库中,有自增列这个字段属性,使用起来也是很方便的.而在Oracle中却没有这个功能,该如何实现呢? 答:在Oracle中虽然没有自增列的说法,但却可以通过触发器(tri ...

  6. 序列(SEQUENCE)、同义词(SYNONYM)

    --============================================= --SQL基础--> 序列(SEQUENCE).同义词(SYNONYM) --========== ...

  7. Oracle sql创建序列sequence

    知道的创建表序列的用途是当建立表的时候,Oracle不像Mysql一样会有自动主键增长AUTO_INCREMENT,所有如果需要主键自动增长的效果,Oracle提供了序列sequence方式. 创建序 ...

  8. oracle如何实现自增?----用序列sequence的方法来实现

    将表t_user的字段ID设置为自增:(用序列sequence的方法来实现) ----创建表 Create  table  t_user( Id number(6),userid varchar2(2 ...

  9. oracle 序列缓存的作用,Oracle序列sequence 深入理解

    Oracle序列:序列(Sequence)创建.使用.修改.删除,序列(Sequence)是用来生成连续的整数数据的对象.序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成. 语法:创 ...

最新文章

  1. Redis的主从复制与高可用搭建(哨兵模式)
  2. 2020下半年新机最新消息_2020年下半年即将发布的手机,你们期待吗
  3. POJ 1039 Pipe
  4. Linux-vmware tools安装与cdrom挂载
  5. 不允许一个用户使用一个以上用户名与一个服务器或共享资源的多重连接。中断与此服务器或共享资源的连接,然后在试一次...
  6. biu~ 你的智能语音客服已免费一键生成!
  7. SQL查询最大值,返回整行数据
  8. vboxdrv.sh failed modprobe vboxdrv failed. Please use 'dmesg' to find out why
  9. 超形象!流体版的勾股定理演示动图...
  10. 你可能对电灯泡一无所知
  11. linux的基础知识——终端
  12. linux promisc 作用,linux 下怎樣查看網卡是否支持混雜(promisc)模式
  13. redis获取byte数组_《Redis深度历险》读书笔记
  14. NeHe OpenGL第十九课:粒子系统
  15. 阿里java工具包_阿里开源的Java诊断工具Arthas(阿尔萨斯)
  16. java教程 pdf_java教程合集(25本)
  17. 华为销售专家LTC专家许浩明老师:流程是数字化转型的基础,以华为营销LTC,华为铁三角为例
  18. Unity Shader 假光源效果
  19. scratch优秀案例-双人足球对战赛
  20. 过往云烟~如梦随风飘!!!

热门文章

  1. [18考研]联系导师的策略和方法
  2. [tensorflow]各个tensorflow版本和CUDA版本对应,以及各个GPU版本CUDA和cuDNN对应
  3. StringBufferStringBuilder
  4. PHP socket多路复用通信demo
  5. 域渗透之委派攻击全集
  6. pycharm中设置run manage.py Task,省去python manage.py的配置
  7. 关于Android封装一个全局的BaseActivity你需要知道的
  8. 生成器 推导式 练习
  9. 未来也许不一定只存在几种底层公链
  10. FineUI秘密花园(八) — 下拉列表控件