(57)【要約】      （修正有）【課題】複数のユーザーによって同時に同一テーブルに対して新規にレコードの登録が行われた場合でも同一番号によって新規登録されることを回避しながら遅延時間の発生を抑える。【解決手段】新規にレコードを登録するテーブルの登録番号の最大値を設定する登録番号管理テーブルを生成する。テーブルに対して新規にレコードを登録する場合には、管理テーブルに登録された登録番号をインクリメントして登録番号を確定し、登録番号の確定後に登録データの登録を行っていく。登録番号を管理するテーブルを生成し、アクセスされた時点で登録番号を確定させて登録番号を管理することにより、複数のユーザから同時に同一のテーブルに対して新規レコードの登録がされた場合でも、登録するテーブルの主キーが登録番号の場合において、同一番号が登録されて、登録時エラーの発生を回避すること及び、新規登録処理における遅延時間を抑えることができる。【選択図】図１
2005301483.tif 000002
【特許請求の範囲】
【請求項１】
各レコードに登録番号を付与し、登録番号でレコードを管理するようにしたデータベースシステムにおいて、登録番号の最大値を設定する登録番号管理テーブルを設け、新規にレコードを登録する場合には、前記登録番号管理テーブルの確定登録番号の最大値を参照し、この登録番号をインクリメントして新規のレコードに対する新たな登録番号を獲得し、この獲得した登録番号を前記登録番号管理テーブルに設定して確定し、この確定された登録番号を用いて新規レコードの登録を行うことを特徴とするデータベースシステムの重複番号登録回避方法。
【請求項２】
請求項１に記載のデータベースシステムの重複番号登録回避方法において、新規のレコードを登録するテーブルが複数ある場合には、前記登録番号管理テーブルに複数のテーブル数分の登録番号を管理する項目を定義し、一つの登録番号管理テーブルで共通に管理することを特徴とするデータベースシステムの重複番号登録回避方法。
【請求項３】
請求項１または２に記載のデータベースシステムの重複番号登録回避方法において、登録処理に失敗した場合の登録番号を管理するエラー登録番号管理テーブルを新たに設け、登録番号の獲得に際して前記エラー登録番号管理テーブルを参照し、エラー登録番号がある場合には、このエラー登録番号を取得することを特徴とするデータベースシステムの重複番号登録回避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データベースシステムとデータベースに登録されたデータ及び、テーブルに対して新規にレコードを登録するデータ処理技術に関するものである。
【背景技術】
【０００２】
電子部品等の社内データベースシステムにおいて、アクセスしたいテーブルに登録されているデータを検索し、検索した結果から同一のデータかどうかの比較を行うことで、同一データの登録処理を回避する機能を備えたシステムは提案されている（特許文献１,２参照）。
【特許文献１】特開2000-227867号公報  「識別情報付与装置及び方法」
【特許文献２】特開平3-223926号公報   「プログラム部品の二重登録防止装置」
【発明の開示】
【発明が解決しようとする課題】
【０００３】
データベースシステムにおいて、テーブルに対して新規レコードとして新規登録を行う場合に、複数のユーザによって同時に同一テーブルに対して新規レコードの登録処理が行われた場合、テーブルにアクセスした時点での最大値を獲得し、インクリメントした値を登録番号として獲得している場合には、複数のユーザが同時にアクセスにくるとアクセスするテーブルの登録番号が確定していないと同じ登録番号を獲得してしまう問題がある。これはユーザが番号を獲得してからテーブルにデータを登録する時間が長くなると同一番号で登録してしまう確率はより高くなる。
これは、登録番号をキーとしていた場合には、同一の登録番号を登録するため登録時にエラーが発生し、結果的に作業効率が落ちることになる。
また、重複しないようにテーブルにデータが登録されるまで次の新規レコードの登録が行えないようにすると遅延時間が発生するといった問題がある。
【０００４】
本発明は、複数のユーザによって同時に同一テーブルに対して新規にレコードの登録が行われた場合でも同一番号によって新規登録されることを回避しながら遅延時間の発生を抑えることを目的としている。
【課題を解決するための手段】
【０００５】
上記課題を達成するために、本発明の重複番号登録回避方法は、新規にレコードを登録するテーブルの登録番号の最大値を設定する登録番号管理テーブルを生成する。テーブルに対して新規にレコードを登録する場合には、管理テーブルに登録された登録番号をインクリメントして登録番号を確定し、登録番号の確定後に登録データの登録を行っていく。
このように、登録番号を管理するテーブルを生成し、アクセスされた時点で登録番号を確定させて登録番号を管理することにより、複数のユーザから同時に同一のテーブルに対して新規レコードの登録がされた場合でも、登録するテーブルの主キーが登録番号の場合において、同一番号が登録されて、登録時エラーの発生を回避すること及び、新規登録処理における遅延時間を抑えることができる。
また、テーブルが複数存在した場合に、登録番号管理テーブルの登録番号を管理する項目をテーブル数分定義することで、テーブルごとにそれぞれの登録番号管理テーブルを生成する必要がないため、番号管理が容易になること及び、１つのテーブルで登録番号が管理されるためテーブルを生成する時間を省くことができる。
【０００６】
また、何らかの原因でテーブルへの登録に失敗した場合、既に登録番号が確定されているため再度利用できなくなる問題が発生するため、失敗した登録番号を管理するエラー登録番号管理テーブルを生成する。新規に登録する場合、この失敗した登録番号が登録されたエラー登録番号管理テーブルの登録番号を取得して登録することで、登録番号が確定した後にテーブルに対して新規レコードの登録に失敗した場合においても、一度獲得した登録番号が再度利用でき登録番号の歯抜け状態を防ぐことができる。
【発明の効果】
【０００７】
本発明によれば、複数のユーザによって同時に同一テーブルに対してアクセスされたとしても、テーブルに登録する登録番号が確定されてからデータの登録を行うため、次新規登録レコードの登録番号獲得までの遅延時間を抑え、さらに同一テーブルに対して、登録番号が重複して登録されることを回避することができる。
また、登録番号を獲得して新規にレコードを登録するテーブルが複数ある場合には、テーブルごとにそれぞれの管理テーブルを生成する必要がなく、一つのテーブルで登録番号を管理するため登録番号の管理が容易になること及び、テーブルごとに管理テーブルを作成する必要がないため、立ち上がり時のテーブルを生成する時間を省くことができる。
また、何らかの原因でエラーが発生しテーブルに登録できなかった場合でも、再度登録番号を利用することが可能なため、エラーが発生した場合でも登録番号を効率良く利用することができる。
【発明を実施するための最良の形態】
【０００８】
本発明は、新規にレコードを登録するテーブルの登録番号の最大値を設定する登録番号管理テーブルを生成する。テーブルに対して新規にレコードを登録する場合には、管理テーブルに登録された登録番号をインクリメントして登録番号を確定し、登録番号の確定後に登録データの登録を行っていく。以下に、本発明の実施の形態を説明する。
【実施例１】
【０００９】
図１は、テーブル管理を１つとした場合の実施例である。図において、５はデータベースであり、１はデータベース５に対してデータの読出し、書込みを行うリード／ライト処理部、２はデータベース５に登録されるレコードの登録番号を管理する登録番号管理テーブル、３は登録番号管理テーブル２から読み出された登録番号をインクリメントして登録番号管理テーブル２に返信し、新規の登録番号を確定させるインクリメント処理部、41はテーブルを示している。
テーブル41に対して、登録番号を獲得して、新規レコードとして登録する場合には、テーブル41の登録番号を管理する登録番号管理テーブル2を生成し、その登録番号管理テーブル2に登録されている登録番号から登録番号を確定する。登録番号は、常に登録するテーブル41の最大値が登録されていることとし、登録番号管理テーブル2に登録された登録番号の最大値を読出し(1))、リード／ライト処理部１のインクリメント処理部３でインクリメントすることで確定する(2))。そして、このインクリメントされた登録番号にデータの書込みを行う(3))。
【００１０】
また、次のユーザが登録番号を獲得できるのは、前処理のユーザが登録番号を確定してからとする。このように登録番号を確定してから登録したいテーブル41に新規レコードとして登録するので、複数のユーザで同一テーブルに対して、同時に新規登録を行ったとしても、登録番号を確定してからレコードの登録を行うため、次ユーザ処理の登録番号を獲得する遅延時間を抑え、さらに重複した登録番号がテーブルに登録されることを回避することができる。
【実施例２】
【００１１】
図２はテーブル管理を複数持った場合の実施例である。図１と相違する点は複数のテーブル41，42，43が設けられている点である。テーブルへの新規レコードの登録で登録番号を獲得してから登録するテーブルが複数存在した場合には、登録番号管理テーブル２を生成し、登録番号を管理したいテーブルA(図２のテーブル41かテーブル42かテーブル43のいずれか)の登録番号を管理する項目を定義する。
図３は、この時の処理フローである。テーブルＡ(図２のテーブル41かテーブル42かテーブル43のいずれか)に新規レコードとして登録する場合、登録番号管理テーブル２のテーブルＡの管理番号を参照する（ステップＳ11及び図２の1)）。次にリード／ライト処理部１のインクリメント３でテーブルＡの管理番号をインクリメントする（ステップＳ12）。テーブルＡの管理番号を確定し、登録する（ステップＳ13及び図２の2)）。テーブルＡにレコード新規登録する（ステップ14）。テーブルＡに新規レコードを登録する（ステップＳ15及び図２の3)）。
【００１２】
これにより、登録番号を取得してテーブルに新規レコードを登録するテーブル全ての登録番号を一元管理することができ、テーブルごとにそれぞれの登録番号管理テーブル２を用意する必要がなく、番号管理が容易になること及び、登録番号管理テーブル２を複数生成する必要がないため、テーブルの生成する時間を省くことができる。
【実施例３】
【００１３】
実施例１，２で記述している処理でテーブルに対しての新規レコードの登録でエラーが発生した場合に、既に登録番号が確定しているためテーブルへの登録エラーが発生した場合には、登録番号が再度利用できなくなる。図４は、この場合、登録エラーとなった登録番号が再度利用できるようにした実施形態の説明である。図１，２と相違する点は、データベースにエラー登録番号管理テーブル22が設けられ、リード／ライト処理部21に登録番号有／無確認部24が設けられた点である。
テーブルをアクセスするアプリケーションは、登録エラーが発生した場合に、登録エラーの番号を管理しているエラー登録番号管理テーブル22に登録エラーとなった登録番号を設定する。テーブルに対して、新規レコードとして登録する場合に、このエラー登録番号管理テーブル22から登録番号を取得して登録したいテーブルに新規データとして登録することで、エラーにより歯抜け状態になる登録番号を防ぎ、効率良く登録番号を利用できる。
【００１４】
図６は図４及び図５の実施形態を説明する処理フローである。テーブルＡに新規レコードとして登録する場合の処理を図４と図６を参照して説明する。エラー登録番号管理テーブル22のテーブルＡの管理番号を参照する（ステップ1及び図４の1)）。リード／ライト処理部21の登録番号有／無確認部24で登録失敗した管理番号が登録されているかチェックする（ステップＳ２及び図４の2)）。
登録されている場合、エラー登録番号管理テーブル22で取得した管理番号を削除する（ステップ３）。テーブルAに新規登録したい項目データを作成する（ステップ７）。テーブルAに新規レコードを登録する（ステップ８及び図４の3)）。テーブルAに書き込み成功したか?（ステップ９）。成功した場合、次の処理を実行する（ステップ11）。失敗した場合、エラー登録番号管理テーブル22に管理番号を設定する（ステップ10及び図４の4)）。次の処理を実行する（ステップ11）。
【実施例４】
【００１５】
図５はエラー登録番号管理テーブル22に管理番号が登録されていない場合の実施形態の説明である。テーブルＡに新規レコードとして登録する場合の処理を図５と図６を参照して説明する。エラー登録番号管理テーブル22のテーブルＡの管理番号を参照する（ステップ1及び図５の1)）。リード／ライト処理部21の登録番号有／無確認部24で登録失敗した管理番号が登録されているかチェックする（ステップＳ２及び図５の2)）。
登録されていない場合、登録番号管理テーブル23のテーブルAの管理番号を参照する（ステップ４及び図５の3)）。管理番号をリード／ライト処理部21のインクリメント25でインクリメントする（ステップ５）。テーブルAの管理番号を確定する（ステップ６）。
テーブルAに新規登録したい項目データを作成する（ステップ７）。テーブルAに新規レコードを登録する（ステップ８及び図５の4)）。テーブルAに書き込み成功したか?（ステップ９）。成功した場合次の処理を実行する（ステップ11）。失敗した場合、エラー登録番号管理テーブル22に管理番号を設定する（ステップ10及び図５の5)）。次の処理を実行する（ステップ11）。
【図面の簡単な説明】
【００１６】
【図１】テーブル管理を１つとした場合の実施の形態を説明するための図
【図２】テーブル管理を複数持った場合の実施の形態を説明するための図
【図３】本発明の実施形態である図２を説明するための処理フロー
【図４】テーブルAへの書き込み失敗によりエラー登録番号管理テーブル22に管理番号が登録されている場合の実施形態を説明する図
【図５】エラー登録番号管理テーブル22に管理番号が登録されていない場合の実施形態を説明する図
【図６】本発明の実施形態である図４、図５を説明するための処理フロー
【符号の説明】
【００１７】
１  リード／ライト処理部
２  登録番号管理テーブル
３  インクリメント処理部
５  データベース
41  テーブル
42  テーブル
43  テーブル
21  リード／ライト処理部
22  登録番号管理テーブル
23  登録番号管理テーブル
24  登録番号有／無確認部
25  インクリメント処理部
【図１】
2005301483.tif 000003
【図２】
2005301483.tif 000004
【図３】
2005301483.tif 000005
【図４】
2005301483.tif 000006
【図５】
2005301483.tif 000007
【図６】
2005301483.tif 000008