PostgreSQL serial类型

2023-09-15 17:23:43

serial类型和序列

postgresql序列号(SERIAL)类型包括

  • smallserial(smallint,short),
  • serial(int)
  • bigserial(bigint,long long int)

不管是smallserial,serial还是bigserial,其范围都是(1,9223372036854775807),但是序列号类型其实不是真正的类型,当声明一个字段为序列号类型时其实是创建了一个序列,INSERT时如果没有给该字段赋值会默认获取对应序列的下一个值。

操作

建表的时添加序列

create table tbl_serial(a serial,b varchar(2));

单独创建序列再使用

 create sequence sql_tbl_serial2_a 
increment by 1 
minvalue 1 
no maxvalue 
start with 1;


create table tbl_serial2(
    a int not null default nextval('sql_tbl_serial2_a'),
    b varchar(2)
);
创建序列
Syntax:
CREATE [ TEMPORARY | TEMP ] SEQUENCE [ IF NOT EXISTS ] name [ 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 } ]

INCREMENT BY : 每次序列增加(或减少)的步长

MINVALUE : 序列最小值,NO MINVALUE表示没有最小值

MAXVALUE : 序列最大值,NO MAXVALUE表示没有最大值

START WITH :以什么序列值开始

CYCLE : 序列是否循环使用

OWNED BY : 可以直接指定一个表的字段,也可以不指定。

需要改序列
Syntax:
ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ]
    [ RESTART [ [ WITH ] restart ] ]
    [ CACHE cache ] [ [ NO ] CYCLE ]
    [ OWNED BY { table_name.column_name | NONE } ]
序列涉及的函数有
函 数返 回 类 型描 述
currval( regclass )bigint获取指定序列最近一次使用netxval后的数值,如果没有使用nextval而直接使用currval会出错。
lastval()bigint返回最近一次用 nextval 获取的任意序列的数值
nextval( regclass )bigint递增序列并返回新值
setval( regclass,bigint )bigint设置序列的当前数值
setval( regclass,bigint ,boolean )bigint设置序列的当前数值以及 is_called 标志,如果为true则立即生效,如果为false,则调用一次nextval后才会生效。

重命名

我有一个名为pivot_device_user的表,它的ID为not null default nextval(‘pivot_device_user_id_seq’::regclass)。在Postgres中重命名为nextval(‘…’)

然后我决定将我的表重命名为pivot_box_user,但nextval(…)仍然是nextval(‘pivot_device_user_id_seq’::regclass)。我想将它更改为nextval(‘pivot_box_user_id_seq’::regclass)。

如果您重命名序列,则其OID保持不变。因此,所有你需要做的是rename the sequence:

ALTER SEQUENCE pivot_device_user_id_seq RENAME TO pivot_box_user_id_seq; 

查询当前序列值

SELECT currval('sequence_name'::regclass);

使用当前序列值,下个序列值递增

SELECT nextval('sequence_name'::regclass);

问题

如果一个序列是NO CYCLE,当序列值全部使用完会怎样呢?

如果序列值用完了当然是错误了!!!如果是CYCLE则会重新从START处开始再次循环。

更多推荐

一个手机ip从这个城市去到另一个城市多久会变

随着现代社会的互联网和移动通信的普及,手机IP地址的变化成为了一个备受关注的话题。当我们从一个城市移动到另一个城市时,我们可能会好奇手机IP地址会在多长时间内发生变化。下面虎观代理小二二将详细介绍一下。手机IP地址会随着其所连接的网络的变化而发生改变。当您从一个城市移动到另一个城市,手机可能会重新连接到新的基站或使用不

基于YOLOv5开发构建农林作物害虫检测识别分析系统

智慧农业现在在很多试点区域已经推广开来了,这个借助各种助力政策的利好对于农业的发展是不错的机会,比如:激光自动除草、自动灭虫等等,结合AI的检测识别技术整合相关的硬件设备,比如:无人机、机械、喷淋等等可以实现大农田块的自动化工作,还是有蛮不错的前景的。这里本文的主要目的就是想要收集构建农林作物中常见的害虫数据来开发构建

淘天集团联合爱橙科技开源大模型训练框架Megatron-LLaMA

9月12日,淘天集团联合爱橙科技正式对外开源大模型训练框架——Megatron-LLaMA,旨在让技术开发者们能够更方便地提升大语言模型训练性能,降低训练成本,并保持和LLaMA社区的兼容性。测试显示,在32卡训练上,相比HuggingFace上直接获得的代码版本,Megatron-LLaMA能够取得176%的加速;在

QUIC协议报文解析(三)

在前面的两篇文字里我们简单介绍了QUIC的发展历史,优点以及QUIC协议的连接原理。本篇文章将会以具体的QUIC报文为例,详细介绍QUIC报文的结构以及各个字段的含义。早期QUIC版本众多,主要有谷歌家的gQUIC,以及IETF致力于将QUIC标准化,即IETFQUIC(iQUIC),还有Facebook家的mvfst

【C刷题训练营】第四讲(打好基础很重要)

前言:大家好,这是c语言刷题训练营的第四讲,打好基础便于对c语言语法与算法思维的提高,感谢你的来访与支持!💥🎈个人主页:​​​​​​Dream_Chaser~🎈💥✨✨刷题专栏:http://t.csdn.cn/baIPx⛳⛳本篇内容:c语言刷题训练营第四讲(牛客网)目录BC23-时间转换解题思路:BC24-总成

魔众文库系统 v5.3.0 小程序激励视频广告、下载收藏喜欢虚拟数量、用户注册站内信和欢迎邮件

魔众文库系统基于文档系统知识,建立平台与领域,打造流量、用户、付费和变现的闭环,帮助您更好的搭建文库系统。魔众文库系统发布v5.3.0版本,新功能和Bug修复累计13项,小程序激励视频广告、下载收藏喜欢虚拟数量、用户注册站内信和欢迎邮件。2023年09月18日魔众文库系统发布v5.3.0版本,增加了以下13个特性:·[

开箱即⽤!HashData 云数仓上线华为蓝鲸应⽤商城

近⽇,经过华为对企业技术、产品和服务能⼒的综合评估,酷克数据企业级云原⽣数据仓库HashData通过与华为OceanStorPacific分布式存储的适配与优化,形成⼀体化解决⽅案,成功上线华为蓝鲸应⽤商城。图1:华为蓝鲸商城HashData产品⻚⾯华为蓝鲸应⽤商城是华为数据存储产品线与合作伙伴联合打造的⼀站式IT应⽤

【无标题】

TCP简单的TCP协议的Python实现,包括服务器和客户端服务器端importsocket#定义服务器地址和端口号server_address=('localhost',8000)#创建TCP套接字server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREA

微服务简介

微服务简介微服务架构是一种软件架构模式,它将一个大型应用程序拆分为一组小型、独立的服务,每个服务都有自己的业务逻辑和数据存储。这些服务可以独立开发、部署和扩展,通常使用HTTP或其他轻量级通信协议进行通信。以下是微服务架构的一些关键特点和概念:微服务独立性:每个微服务都是独立的,拥有自己的数据库、业务逻辑和用户界面。这

MySQL的sql_mode合理设置

MySQL的sql_mode合理设置1、sql_mode设置介绍说明sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题。showvariab

用于设计和分析具有恒定近心点半径的低推力螺旋轨迹研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。⛳️座右铭:行百里者,半于九十。📋📋📋本文目录如下:🎁🎁🎁目录💥1概述📚2运行结果🎉3参考文献🌈4Matlab代码实现💥1概述本文可用于设计和分析具有恒定近心点半径的低推力螺旋

热文推荐