妈吖,看过这个大厂的oracle主键自增,我的信心暴增!信创,国产数据库也能行。

创作不易 只因热爱!!

热衷分享,一起成长!

“你的鼓励就是我努力付出的动力”


1.数据库oracle自增主键字段思维导图

在Oracle数据库中,可以通过创建序列(SEQUENCE)来实现自增功能。但也可以不在数据库中实现,而是通过程序中实现,以下是XX大厂的应用端对oracle表主键字段的类似自增,并可一次多增的方法分析,后附代码。
刚使用时觉得挺有学习意义,分享一下,通过程序实现表主键的自增,适合​任意数据库。
国产数据库,也是可以用此方法通过程序实现。

OK
成功
失败
失败
不存在结果
存在
成功
存在
不存在
三次失败后
失败1
失败2
失败3
失败
成功
参数判断
更新表table
更新成功,
再看结果记录
判断是否
存在记录
插入新记录
回滚,返回-1
提交, 获取新记录返回
继续更新表
最多三次
插入新记录
回滚,返回, 重新更新表

2.oracle表主键字段自增使用说明

  • 表SYS_XTCS主键自增1 ,每次程序调用,当前主键值autovalue=func_getmax(sqlhis,‘SYS_XTCS’,1)

获取主键后写入表 insert into SYS_XTCS values(autovalue,…)

  • 表SYS_XTCS主键增加多行,如9,每次程序调用,当前主键值autovalue=func_getmax(sqlhis,‘SYS_XTCS’,9)

获取主键后写入表 insert all …或游标循环写入…

如下,首列表名称BMC,当前主键值DQZ,数据库连接名 transaction
首列表名称BMC

3.通过程序实现ora表主键自增代码示例

代码是powerbuilder写的

// func_getmax()
//  功能:取最大值, 错误时返回:-1
// 传参N,      类型        , 参数名
// 传参1,      transaction , aoTransaction
// 传参2,      string      , asTableName
// 传参3,      integer     , aiNeedCountDecimal{0} llValue
Long llCount, llRetryIf IsNull(aiNeedCount) Or aiNeedCount < 1 ThenReturn -1
End IfProcess_Begin:
func_begin_transaction(aoTransaction) 
UPDATE SYS_MAX SET DQZ = DQZ + :aiNeedCount WHERE BMC = :asTableName USING aoTransaction;If aoTransaction.SQLCode <> 0 Then // update失败,判断是否存在记录SELECT COUNT(*) INTO :llCount FROM SYS_MAX WHERE BMC = :asTableName USING aoTransaction;If llCount > 0 Then              // 记录存在继续update(最多三次)llRetry ++If llRetry >= 3 ThenGoto Process_ErrorElsefunc_rollback_transaction(aoTransaction)Goto Process_BeginEnd If  Else                              // 记录不存在则插入新记录INSERT INTO SYS_MAX(BMC, DQZ) VALUES (:asTableName, :aiNeedCount) USING aoTransaction;If aoTransaction.SQLCode <> 0 Then Goto Process_ErrorEnd IfllValue = aiNeedCountGoto Process_SuccessEnd If  
ElseSELECT COUNT(*) INTO :llCount FROM SYS_MAX WHERE BMC = :asTableName USING aoTransaction;If IsNull(llCount) Or llCount <= 0 Then // 记录不存在则插入新记录INSERT INTO SYS_MAX(BMC, DQZ) VALUES (:asTableName,:aiNeedCount) USING aoTransaction;If aoTransaction.SQLCode <> 0 Then Goto Process_ErrorEnd IfllValue = aiNeedCountGoto Process_SuccessEnd If  
End IfSetNull(llValue)
SELECT DQZ INTO :llValue FROM SYS_MAX WHERE BMC = :asTableName USING aoTransaction;If IsNull(llValue) Or llValue < aiNeedCount ThenGoto Process_Error
End IfProcess_Success:
func_commit_transaction(aoTransaction)Return llValue - aiNeedCount + 1Process_Error:
func_rollback_transaction(aoTransaction)Return -1
但行好事,莫问前程!

end

**你好呀,我是一个医信行业工程师,喜欢学习,喜欢搞机,喜欢各种捣,也会持续分享,如果喜欢我,那就关注我吧!**

往期精彩:

作者|医信工程师随笔|Carltiger_github

图片|网络|侵删

关注我,我们共同成长

“你的鼓励就是我分享的动力”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/386662.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker中使用自定义网络方式实现Redis集群部署与测试流程

场景 Docker中Docker网络-理解Docker0与自定义网络的使用示例&#xff1a; Docker中Docker网络-理解Docker0与自定义网络的使用示例-CSDN博客 参考上面的流程实现自定义网络的实现。 下面记录其应用实例&#xff0c;使用Docker的自定义网络实现redis集群部署。 注&#xf…

vue3数据结构的渲染01

处理数据&#xff1a; //现有原始数据showCertificateUrl “url01;url02” 使用以下代码将两条通过分号";"分割的url进行处理 const parseUrls () > {urls.value [];// 每次重新赋值前一定要清空之前的旧数据&#xff01;if (!showCertificateUrl.value) {retu…

数模打怪(八)之图论模型

一、作图 图的数学语言描述&#xff1a; G( V(G), E(G) )&#xff0c;G&#xff08;graph&#xff09;&#xff1a;图&#xff0c;V&#xff08;vertex&#xff09;&#xff1a;顶点集&#xff0c;E&#xff08;edge&#xff09;&#xff1a;边集 1、在线作图 https://csac…

自闭症儿童能否上学:家长的选择与困惑

在自闭症儿童的成长旅程中&#xff0c;上学这一关键议题常常使家长陷入异常艰难的抉择和无尽的困惑之中。对于自闭症儿童究竟能否上学&#xff0c;家长们不得不面对众多纷繁复杂且至关重要的考量因素。 一方面&#xff0c;家长们怀揣着美好的期望&#xff0c;渴望孩子能够融入正…

C# 使用pythonnet 迁入 python 初始化错误解决办法

pythonnet 从 3.0 版本开始&#xff0c;必须设置Runtime.PythonDLL属性或环境变量 例如&#xff1a; string pathToVirtualEnv ".\\envs\\pythonnetTest"; Runtime.PythonDLL Path.Combine(pathToVirtualEnv, "python39.dll"); PythonEngine.PythonHom…

知识图谱增强的RAG(KG-RAG)详细解析

转自&#xff1a;知识图谱科技 这是一个与任务无关的框架&#xff0c;它将知识图谱&#xff08;KG&#xff09;的显性知识与大型语言模型&#xff08;LLM&#xff09;的隐含知识结合起来。这是该工作的arXiv预印本 https://arxiv.org/abs/2311.17330 。 我们在这里利用一个名为…

linux中mysql的安装使用(普通版版本+docker版本)

linux中mysql的安装使用 一、普通安装1.下载安装包2.流程 二、用docker安装1.拉取mysql镜像2.启动镜像3.开启权限第一种情况第二种情况 三、用Navicat连接 一、普通安装 1.下载安装包 挑选个你喜欢的目录&#xff0c;用wget下载并且解压 wget http://dev.mysql.com/get/Down…

Java人力资源招聘社会校招类型招聘系统PC端

&#x1f50d;【揭秘】人力资源新利器&#xff01;社会校招一站式PC端招聘系统全攻略&#x1f680; &#x1f308; 开篇引言&#xff1a;招聘新纪元&#xff0c;效率为王&#xff01; Hey小伙伴们&#xff0c;你是否还在为繁琐的招聘流程头疼不已&#xff1f;&#x1f92f; 面…

京东商品详情API:多规格商品的返回值处理

处理京东商品详情API中关于多规格商品的返回值&#xff0c;首先需要了解京东API的返回数据结构。通常&#xff0c;对于多规格商品&#xff08;如不同颜色、尺寸等选项的商品&#xff09;&#xff0c;API会返回一个包含多个规格选项和对应价格、库存等信息的复杂数据结构。 以下…

【“微软蓝屏”事件暴露了网络安全哪些问题?】建设安全稳固的网络基础设施

目录 前言一、软件更新流程中的风险管理和质量控制机制&#xff08;一&#xff09;测试流程及风险识别&#xff08;二&#xff09;风险管理策略&#xff08;三&#xff09;质量控制措施 二、预防类似大规模故障的最佳方案或应急响应对策&#xff08;一&#xff09;冗余系统设计…

.NET 一款获取主流浏览器存储密码的工具

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

【解决方案】华普微基于CMT2150A自发电无线遥控解决方案

一、方案概述 自发电无线遥控设备的概念是指设备自身能够通过能量收集技术&#xff0c;如太阳能、动能收集或其他可再生能源&#xff0c;产生所需的电能来供电&#xff0c;而无需更换电池或外部电源。这种技术的应用可以减少对电池的依赖&#xff0c;降低对环境的影响&#xf…

github好用工具分享——lux:一键获取视频指令

我们在学习工作中需要大量的数据信息&#xff0c;然而这些数据有什么获取很麻烦&#xff0c;尤其是视频下载资源&#xff0c;那么有没有一种工具即简单方便又实用呢&#xff1f; 接下来我会向大家介绍lux工具的使用&#xff0c;lux是非常方便的获取视频资源指令&#xff0c;只需…

前端拥抱AI:LangChain.js 入门遇山开路之PromptTemplate

PromptTemplate是什么 PromptTemplate是一个可重复使用的模板&#xff0c;用于生成引导模型生成特定输出的文本。与Prompt的区别: PromptTemplate相对于普通Prompt的优势&#xff0c;即其灵活性和可定制性。 简单了解PromptTemplate后&#xff0c;咱们就来聊聊LangChain里的P…

C语言——运算符及表达式

C语言——运算符及表达式 运算符运算符的分类&#xff08;自增运算符&#xff09;、--&#xff08;自减运算符&#xff09;赋值运算符逗号运算符&#xff08;顺序求值运算符&#xff09; 表达式 运算符 运算符的分类 C语言的运算符范围很宽&#xff0c;除了控制语句和输入输出…

如何安装python

以下的安装仅针对Windows10系统 一、下载python和解释器 解释器下载 第一步&#xff0c;找到下载的地方 1.找到官网 2.直接点击地址链接 Python Release Python 3.7.2 | Python.org 第二步&#xff0c;找到对应的版本进行安装 进入页面之后&#xff0c;下滑&#xff0c;…

【学术会议征稿】第六届土木建筑与城市工程国际学术会议(ICCAUE 2024)

第六届土木建筑与城市工程国际学术会议&#xff08;ICCAUE 2024&#xff09; 2024 6th International Conference on Civil Architecture and Urban Engineering (ICCAUE 2024) 第六届土木建筑与城市工程国际学术会议&#xff08;ICCAUE 2024&#xff09;将于2024年11月15-17…

学习008-02-04-08 Localize UI Elements(本地化UI元素)

Localize UI Elements&#xff08;本地化UI元素&#xff09; This lesson explains how to localize an XAF application. It describes how to translate UI elements into German and create a multi-language application. 本课介绍如何本地化XAF应用程序。它描述了如何将U…

二次开发必备:开源在线海报图片设计器——poster-design

一、介绍 poster-design是一个最酷的开源在线海报图片设计器&#xff0c;漂亮易用且功能强大。它适用于多种场景&#xff1a;海报图片生成、电商分享图、文章长图、视频/公众号封面等&#xff0c;无需下载软件即可轻松实现创意、迅速完成排版。使用Vue3 、Vite5 、Vuex 、Elem…

Vite + Vue3 + TS项目配置前置路由守卫

在现代前端开发中&#xff0c;使用 Vue 3 和 TypeScript 的组合是一种流行且高效的开发方式。Vite 是一个极速的构建工具&#xff0c;可以显著提升开发体验。本文博主将指导你如何在 Vite Vue 3 TypeScript 项目中配置前置路由守卫&#xff08;Navigation Guards&#xff09;…