[英]Oracle sequence generator within interval
我使用的是oracle 11gr2,插入新产品时的产品表中,我需要分配一个从1到65535的自动递增ID。然后可以删除该产品。 当我到达65535时,我需要扫描表格以查找用于分配新ID的空闲孔。 由于我有此要求,因此无法使用oracle序列,因此我正在使用一个函数(在插入时也尝试了触发器)以生成免费的id ...问题是例如我无法处理批量插入,而我并发问题...我该如何解决? 通过使用某种外部ID生成器?
听起来像是任意设计。 拥有最大16位产品ID或重用ID有充分的理由吗? 这两个约束都是不好的做法。
我怀疑任何外部生成器都将提供Oracle尚未提供的任何功能。 我建议使用序列进行批量插入。 您遇到的问题是如何回收ID。 Oracle普通序列不跟踪主键,因此您需要一种解决方案来首先找到回收的键,然后再回退到序列。
产品ID回收
这样可以确保您始终在插入新序列ID之前进行回收
如果要在数据库中实现逻辑,则可以创建一个视图(VIEW $ PRODUCTS),其中DELETED ='N',并使用INSTEAD OF INSERT触发器进行插入。
在任何情况下,当序列用完(或序列换行)用完时,对于批量插入您都是不走运的。 如果我是你,我会重新考虑设计的那部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.