@ITのDatabase Expert 会議室でシーケンスオブジェクトと採番テーブルの話題がある。
この中で、第三の方法として欠番検索 という方法があるとの投稿があった。
具体的には
SQLに慣れていない分かりづらいかもしれない
が、このページのjoinやunionの説明を参考にすると、確かに欠番を探索しているSQLであることがわかる。
この中で、第三の方法として欠番検索 という方法があるとの投稿があった。
具体的には
select NEW_CODE = min(t1.CODE + 1)
from (
select CODE from [TABLE] union all
select CODE from [RESERVE] (READUNCOMMITTED)
) t1 left outer join (
select CODE from [TABLE] union all
select CODE from [RESERVE] (READUNCOMMITTED)
) t2 on (t1.CODE + 1) = t2.CODE
where t2.CODE is null
(上記サイト、"未記入"さんの投稿より)
というSQLを組めばいいらしいfrom (
select CODE from [TABLE] union all
select CODE from [RESERVE] (READUNCOMMITTED)
) t1 left outer join (
select CODE from [TABLE] union all
select CODE from [RESERVE] (READUNCOMMITTED)
) t2 on (t1.CODE + 1) = t2.CODE
where t2.CODE is null
(上記サイト、"未記入"さんの投稿より)
SQLに慣れていない分かりづらいかもしれない
が、このページのjoinやunionの説明を参考にすると、確かに欠番を探索しているSQLであることがわかる。