Oracle - 用户定义的排序问题

时间:2017-07-18 05:26:46

标签: oracle plsql sequencing

说明: 有两个任务A&每天安排的B&每月分别。

任务性质:

  • 所有任务都分配了一个seq_number,它是唯一的。
  • 使用存储任务的表格中的MAX(seq_number)+1来分配此编号。
  • 任务完成后&当天已更改为安排下一个任务,旧任务将被删除,并且将添加新的任务。
  • 在下一个计划之前,将保留旧任务记录。
  • seq_number是存储这些记录的表的主键。

例如。任务A计划于2016年6月30日使用seq_number 1,任务B计划于2016年6月使用seq_number 2.一旦2016年6月30日的任务A完成,其将被删除,并且将为01-Jul添加新任务-2016与seq_number 3.直到7月底,任务A将继续删除seq_number 3记录并使用seq_number 3添加另一个第二天的任务A.一旦我们到达7月底,任务B将被删除并添加seq_number 4现在,当任务A安排在2016年8月1日时,它将采用seq_number 5。

正如你所看到的那样,seq_number一直在增加,有一天它会上升。

我的解决方案:

我们可以随机获取范围内的任何数字并分配,而不是取最大+1。如果我们得到主键唯一约束错误,那么我们可以再次在循环中随机找到另一个数字,直到找到一个空闲数字。

请告知解决此问题的可行方法。欢迎所有的想法。

编辑: seq_number列为NUMBER(6),无法轻松更改。解决方案应该能够重用seq_numbers。

0 个答案:

没有答案