Oracle_Sequence如何初始化开始值
2024-09-21 21:55:41
Sequence的start with 值如何确定才能保证生成的主键不会冲突???
我的项目中最开始数据库表主键的生成策略是 increment,但由于后来采用了集群部署的方式,出现了主键冲突的问题. 故改为使用 Sequence生成.
<id name="id" column="id"> <generator class="increment" /> </id>
<generator class="sequence"> <param name="sequence">SEQ_RECEIPT_HIBERNATE</param> </generator>
统计数据库中,指定序列被哪些表的主键使用,故将全部最大值加起来作为序列的开始值+1,可以保证绝对不会冲突.
有些表中无数据,因此上要作判空处理.
1. 一个序列只被一个表使用时
-- MANTIS_CARD_LOG : OID -- #### SEQ_RECEIPT_CARD_LOG ######--- -- else max(l1.OID) end) SEQ_RECEIPT_CARD_LOG_MAX from MANTIS_CARD_LOG l1 --
create sequence SEQ_RECEIPT_CARD_LOG minvalue maxvalue start increment nocache;
2. 一个序列被多个表使用时
--MANTIS_CARD_INFO:OID --MANTIS_CARD_REP_INFO:OID -- #### SEQ_RECEIPT_CARD ######--- -- select (c1c1.c1Max + c2c2.c2Max ) SEQ_RECEIPT_CARD_MAX from ( else max(c1.OID) end) c1Max from MANTIS_CARD_INFO c1) c1c1, ( else max(c2.OID) end) c2Max from MANTIS_CARD_REP_INFO c2) c2c2 --
create sequence SEQ_RECEIPT_CARD minvalue maxvalue start increment nocache;
Hibernate主键生成策略参考文章:
Hibernate各种主键生成策略与配置详解
最新文章
- Windows bat脚本学习(1)
- 前端AJAX传递数组给Springmvc接收处理
- 【wikioi】1922 骑士共存问题(网络流/二分图匹配)
- 【技术贴】webservice cxf2 客户端动态调用报错No operation was found with the name
- 冒烟测试、α测试、Beta测试、性能测试
- APMServ5.2.6 升级PHP版本 到高版本 5.3,5.4
- iOS_block内存分析
- xamarin跨平台iOS、Android 与Windows
- SQL Server 复制 - 发布订阅(SQL Server 数据同步)
- 深入浅出WPF——附加事件(Attached Event)
- Openresty 数据共享API.Data Sharing within an Nginx Worker
- Java EE 开发环境搭建
- 疯狂java讲义 第八章课后题
- LayaAir疑难杂症之三:1.7版本click()、execCommand(&#39;copy&#39;)函数不生效
- java 大文件分割与组装
- kuangbin fire搜索bfs
- MySql常用命令集Mysql常用命令5
- adb shell dumpsys 命令
- scrapy 项目通过scrapyd部署
- docker之数据卷管理
热门文章
- [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
- 数据库及SQL----常用知识点总结
- Oracle 与Mysql区别
- CentOS7下搭建hadoop2.7.3完全分布式
- 九天学会Java,第一天,变量和数据类型,赋值和输出
- Openfire分析之二:主干程序分析
- STL中队列(queue)的使用方法
- MIPI DSI转LVDS芯片方案TC358775XBG
- 百行go代码构建p2p聊天室
- spring 整合Mybatis 错误:Parameter &#39;items_id&#39; not found. Available parameters are [array]