Oracle序列介绍
文章目录
- Oracle序列介绍
- 1. Oracle序列演进
- 2. Oracle序列使用
- 3. Oracle身份列(自增列)
- 4. Oracle序列常见使用与问题
Oracle序列介绍
1. Oracle序列演进
Oracle序列(Sequence)是数据库生成唯一数值序列的对象,主要用于解决主键自增、唯一标识生成等场景。其核心原理基于内存预分配机制,通过
CACHE参数提升性能,同时保障事务独立性。
- Oracle 11g及之前:
依赖手动创建序列+触发器实现自增主键。- Oracle 12c:
引入身份列(Identity Column),简化自增列管理(详见第3节)。- Oracle 19c:
支持SCALABLE序列,优化分布式数据库的序列分配效率。
2. Oracle序列使用
2.1 创建序列
-- 实例1
CREATE SEQUENCE seq_emp START WITH 1000 -- 起始值 INCREMENT BY 1 -- 步长 MAXVALUE 9999 -- 最大值 MINVALUE 1000 -- 最小值 CACHE 20 -- 缓存数 CYCLE; -- 循环生成-- 实例2
CREATE SEQUENCE SEQ1START WITH 1INCREMENT BY 1NOMAXVALUENOCYCLECACHE 20;
参数说明:
start with 1指定序列初始值为1increment by 1指定序列值每次递增1,这个值可以为负数,代表递减序列,increment by 1也是序列创建的默认设置,可以省略。nomaxvalue指定序列值没有上限(实际最大值为10^28-1,),默认设置。你也可以用maxvalue N来指定序列的最大值。nocycle指定序列到达最大值时不循环,默认设置。如果指定cycle,那么序列到达最大值后,会从头开始循环。cache 20为了提高访问速度,预先分配好并缓存在内存中的序列值个数,默认设置。如果是较繁忙的系统,可以适当的提高该值。
2.2 调用序列
- 获取下一个值:
INSERT INTO emp (id, name) VALUES (seq_emp.NEXTVAL, 'Alice'); - 查看当前值:
SELECT seq_emp.CURRVAL FROM DUAL; -- 必须先调用NEXTVAL
2.3 修改与删除
- 修改序列:
限制:无法修改起始值(需重建序列)。ALTER SEQUENCE seq_emp INCREMENT BY 2; -- 调整步长 - 删除序列:
DROP SEQUENCE seq_emp;
3. Oracle身份列(自增列)
自Oracle 12c起,身份列简化了自增字段的管理,底层仍依赖序列实现。
3.1 创建身份列
身份列定义的三种方式(其实就2种):
generated always:总是由系统自动生成身份列的值,如果显式给身份列赋值,则会引发异常。generated by default:用户可以给身份列赋值,如果未赋值,则由系统生成身份列的值。generated by default on null:为第二项定义的扩展,如果指定了on null选项,则为身份列列赋值为null时会由系统生成值。
CREATE TABLE employees ( id NUMBER GENERATED ALWAYS AS IDENTITY, name VARCHAR2(50)
);CREATE TABLE employees ( id NUMBER GENERATED BY DEFAULT AS IDENTITY, name VARCHAR2(50)
); CREATE TABLE employees ( id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY, name VARCHAR2(50)
);
当我们创建身份列的时候,Oracle会隐式的创建一个序列生成器(Sequence Generator SG)。既然底层也是序列,那么这个序列生成器的属性在创建时也是可以显式指定的。
create table tab3 (
id number generated always as identity (
start with 10
increment by 2
maxvalue 200
nocycle),
name varchar2(32)
);
3.2 身份列 vs 传统序列
| 特性 | 身份列 | 传统序列 |
|---|---|---|
| 作用范围 | 仅限当前表 | 可跨多表共享 |
| 管理复杂度 | 自动维护 | 需手动关联触发器 |
| 灵活性 | 参数调整受限 | 完全可控 |
4. Oracle序列常见使用与问题
- 序列开始值修改
-- 获取表中序列最大值
select max(id) from your_table
-- 查看当前值(需先调用NEXTVAL)
SELECT your_seq.CURRVAL FROM dual;-- 调整到目标值(如改为1000)
ALTER SEQUENCE your_seq INCREMENT BY 999; -- 1000 - 当前值
SELECT your_seq.NEXTVAL FROM dual; -- 执行后变为1000
ALTER SEQUENCE your_seq INCREMENT BY 1; -- 恢复步长
- 修改列为自增列
-- 确认ID字段当前属性
SELECT column_name, data_type, identity_column
FROM all_tab_columns
WHERE table_name = 'SSO_HOSPITAL_DUTY_INFORMATION'
AND owner = 'SSO2';-- 方案A:严格自增(禁止手动插入值)
ALTER TABLE SSO2.SSO_HOSPITAL_DUTY_INFORMATION
ADD (NEW_ID NUMBER GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1)
);-- 方案B:允许手动覆盖(业务灵活性更高)
ALTER TABLE SSO2.SSO_HOSPITAL_DUTY_INFORMATION
ADD (NEW_ID NUMBER GENERATED BY DEFAULT AS IDENTITY (START WITH 1)
);-- 迁移原ID数据(如需保留历史值)
UPDATE SSO2.SSO_HOSPITAL_DUTY_INFORMATION SET NEW_ID = ID;-- 删除原列并重命名(需停业务)
ALTER TABLE SSO2.SSO_HOSPITAL_DUTY_INFORMATION DROP COLUMN ID;
ALTER TABLE SSO2.SSO_HOSPITAL_DUTY_INFORMATION RENAME COLUMN NEW_ID TO ID;-- 重新添加主键(假设原约束名为PK_HOSP_DUTY)
ALTER TABLE SSO2.SSO_HOSPITAL_DUTY_INFORMATION
ADD CONSTRAINT PK_HOSP_DUTY PRIMARY KEY (ID);
- 现有身份列修改方式
-- 修改为强制模式
ALTER TABLE SSO2.SSO_HOSPITAL_DUTY_INFORMATION MODIFY (ID GENERATED ALWAYS AS IDENTITY);
-- 修改为手动模式
ALTER TABLE SSO2.SSO_HOSPITAL_DUTY_INFORMATION MODIFY (ID GENERATED BY DEFAULT AS IDENTITY);
相关文章:
Oracle序列介绍
文章目录 Oracle序列介绍1. Oracle序列演进2. Oracle序列使用3. Oracle身份列(自增列)4. Oracle序列常见使用与问题 Oracle序列介绍 1. Oracle序列演进 Oracle序列(Sequence)是数据库生成唯一数值序列的对象,主要用于…...
docker的安装使用0废话版本自学软硬件工程师778天
见字如面, 这里是AIGC创意人_竹相左边 上一篇 因为 自己开发客户系统,为了解决一键启动 前端后端,涉及到了docker-compose 在新的电脑上安装docker 有各种问题这里再次记录下,既是笔记也是分享。 我先用自己的话说一遍࿰…...
探秘 Svelte+Vite+TS+Melt - UI 框架搭建,开启高效开发
框架太“重”了:通常一个小型项目只由少数几个简单页面构成,如果使用 Vue 或者 React 这些框架来研发的话,有点“大材小用”了。构建的产物中包含了不少框架运行时代码(虚拟 DOM、响应式、状态管理等),这些代码对于小型项目而言是…...
3D数据共享标准——GLB文件格式揭秘
GLB 文件格式:跨平台 3D 数据共享的标准 简介 在这个数据爆炸的时代,3D 数据因其直观、逼真的特点而得到广泛应用。然而,不同 3D 软件和平台之间的兼容性一直是一个难题。 为了解决这一问题,GLB 文件格式应运而生。作为一种标准…...
微信小程序事件绑定基本语法
微信小程序使用 bind 或 catch 前缀绑定事件,语法如下: <组件 bind事件名"处理函数" catch事件名"处理函数"></组件> bind:事件绑定,允许事件冒泡(向父组件传递)。 catc…...
页面编辑器CodeMirror初始化不显示行号或文本内容
延迟刷新 本来想延迟100毫秒的,但是会出现样式向左偏移的情况,于是试了试500毫秒,发现就没有问题了,可能是样式什么是需要一个加载过程吧。 useEffect(() > {editorRef.current?.setValue(value || );setTimeout(() > {edi…...
vscode 连不上 Ubuntu 18 server 的解决方案
下载 vscode 历史版本 18.5(windows请装在 系统盘 C 盘) 打开 vdcode,将 自动更新 设置为 None (很关键,否则容易前功尽弃) 重命名(删除) 服务器上的 .vscode-server 文件夹 重新…...
云原生运维在 2025 年的发展蓝图
随着云计算技术的不断发展和普及,云原生已经成为了现代应用开发和运维的主流趋势。云原生运维是指在云原生环境下,对应用进行部署、监控、管理和优化的过程。在 2025 年,云原生运维将迎来更加广阔的发展前景,同时也将面临着一系列…...
Redis进阶--哨兵
目录 一、引言 二、介绍 三、哨兵的核心功能 四、使用docker进行单个主机redis主从复制哨兵操作 五、哨兵重新选取主节点的流程 1.主观下线 2.客观下线 3.主节点挂了 4.挑选新主节点 六、总结 一、引言 如果主从复制中,主节点挂了,从节点会迷茫…...
Franka 机器人x Dexterity Gen引领遥操作精细任务新时代
教授机器人工具灵活操作难题 在教授机器人灵活使用工具方面,目前主要有两种策略:一是人类遥控(用于模仿学习),二是模拟到现实的强化学习。然而,这两种方法均存在明显的局限性。 1、人类遥控(用…...
UE5 RPC调用示例详解
文章目录 前言一、示例场景二、代码实现三、关键点解析3.1 RPC类型选择3.2 可靠性设置3.3 权限控制3.4 输入处理 四、测试与验证总结 前言 在UE5中,RPC(远程过程调用)是实现多人游戏逻辑同步的核心机制。以下通过一个玩家跳跃的示例…...
专题|MATLAB-R语言Logistic逻辑回归增长模型在互联网金融共生及移动通信客户流失分析实例合集
全文链接:https://tecdat.cn/?p41343 作为数据科学家,我们始终关注如何通过模型创新揭示复杂系统的动态规律。本专题合集聚焦两大核心应用场景,通过 Logistic 增长模型与逻辑回归技术,为互联网金融共生演化与移动通信客户流失预警…...
从零构建一个全栈AI应用:Next.js + FastAPI + OpenAI API
💡 为什么写这篇文章? 很多开发者希望构建一个能“聊天、问答、调用AI能力”的完整应用,但在前端、后端、模型接口之间打通时,常常踩坑。 今天这篇文章将手把手教你如何从零构建一个 AI 全栈应用: 前端用 Next.js 构…...
idea里面不能运行 node 命令 cmd 里面可以运行咋回事啊
idea里面不能运行 node 命令 cmd 里面可以运行咋回事啊 在 IntelliJ IDEA(或其他 JetBrains 系列 IDE)中无法运行某些命令,但在系统的命令提示符(CMD)中可以正常运行,这种情况通常是由于以下原因之一导致的…...
Dify 生成提示词的 Prompt
Dify 生成提示词的 Prompt **第1次提示词****第2次提示词****第3次提示词**总结 Dify 生成提示词是,会和LLM进行3次交互,下面是和LLM进行交互是的Prompt。 以下是每次提示词的概要、目标总结以及原始Prompt: 第1次提示词 概要: …...
ocr python库
ocr python库 上手Git、Gitee和Github!watt toolkit...
【学生管理系统升级版】
学生管理系统升级版 需求分析:注册功能:登录功能:验证码规则:忘记密码: 实操:系统主页面注册功能登录功能忘记密码效果演示 需求 为学生管理系统书写一个登陆、注册、忘记密码的功能。 只有用户登录成功之后&…...
HTTP:二.URI及相关术语
HTTP相关技术和术语 WEB开发语言 **http:**Hyper Text Transfer Protocol 应用层协议,默认端口: 80/tcp WEB前端开发语言: htmlcssjavascripthtml Hyper Text Markup Language 超文本标记语言,编程语言,主要负责实现页面的结构 范例:html 语言 <html> <h…...
Web3 的云基础设施正在成型,Polkadot 2.0 用三项技术改写“上链成本”
在Web3基础设施内卷加剧的今天,“如何以更低成本、更大灵活性部署一条高性能应用链”正成为开发者们最关心的问题。而刚刚走出“技术慢热”误区的Polkadot,正在用一套名为 Polkadot 2.0 的架构升级方案,重新定义这一问题的解法。 这套升级最…...
【12】RUST智能指针
文章目录 智能指针Box<T>Rc<T>Weak<T>方法 Arc<T>RefCell<T>方法Ref<T>和RefMut<T> 常见使用方式 智能指针 Box<T> 数据存储在堆上只能有一个所有者 Rc<T> 单线程,引用计数不可变需要主要避免循环引用 …...
机器学习——ROC曲线、PR曲线
一、ROC曲线简介 1.1 ROC曲线的构成 1.横轴(假正率,FPR): 表示负样本被错误分类为正的比例(越小越好) 2.纵轴(真正率,TPR,即召回率): 表示正样…...
Unity AssetBundle依赖树可视化分析工具开发指南
一、需求分析与技术选型 1.1 需求背景 在Unity项目开发中,AssetBundle依赖关系管理是性能优化的关键。当项目资源量达到GB级别时,依赖树深度可能超过10层,容易导致: 资源重复打包(平均冗余率可达15%-30%)…...
WebStorm中使用live-server插件
文章目录 1. 前提条件1.1 已安装Node1.1.1 淘宝的镜像1.2 安装live-server1.3 安装WebStorm2. Windows配置hosts3. WebStorm配置live-server3.1 WebStorm创建3.2 启动 live-server1. 前提条件 1.1 已安装Node Windows PowerShell 版权所有(C) Microsoft Corporation。保留所…...
RTP Payload Format for H.264 Vide(1)
摘要:: 本备忘录描述了一种用于 ITU-T H.264 视频编码标准(与 ISO/IEC 国际标准 14496-10 技术上相同)的 RTP 负载格式,但不包括可伸缩视频编码(SVC)扩展和多视角视频编码(MVC&#…...
我为女儿开发了一个游戏网站
大家好,我是星河。 自从协助妻子为女儿开发了算数射击游戏后,星河就一直有个想法:为女儿打造一个专属的学习游戏网站。之前的射击游戏虽然有趣,但缺乏难度分级,无法根据女儿的学习进度灵活调整。而且,仅仅…...
【Spring Cloud Netflix】GateWay服务网关
1.基本概述 GateWay用于在微服务架构中提供统一的入口点,对请求进行路由,过滤和处理。它就像是整个微服务系统的大门,所有外部请求都要通过它才能访问到后端的各个微服务。 2.核心概念 2.1路由(Route) 路由是Spring Cloud gateWay中最基本…...
Docker部署Jenkins服务
文章目录 1.下载Jenkins服务2.部署Java21(可选)2.1 安装Java21 3.Maven3.9.9安装4.启动Jenkins5.初始化Jenkins5.1 入门5.2 安装推荐的插件5.3 创建第一个管理员用户5.4 实例配置5.5 Jenkins已就绪5.6 开始使用Jenkins5.7 重启Jenkins 6.配置Jenkins6.1 …...
[ctfshow web入门] web40
信息收集 怎么一下子多这么多过滤啊,我以为跳过了好几题 这又能eval了,但是连$也不能用了 不能用. * ?,所以打不出fla*或者fla?????了 不能用/,构造不出日志注入和伪协议包含 仔细观察,禁的是中文的括号&#x…...
蓝桥杯c ++笔记(含算法 贪心+动态规划+dp+进制转化+便利等)
蓝桥杯 #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; //常使用的头文件动态规划 小蓝在黑板上连续写下从 11 到 20232023 之间所有的整数,得到了一个数字序列: S12345…...
UE5 Windows游戏窗口置顶
参考资料:UE5 UE4 项目设置全局置顶_ue4运行设置置顶-CSDN博客 修改完build.cs后,关掉重新生成解决方案。(不然可能编译报错,在这卡了半个小时) 不知道怎么用C的,可以用这个 Topmost - Keep Editor/Game w…...
