複合キーによる枝番

最終更新日: 2022年7月21日
R8 | R9

主キーの手動入力

  1. 「ID」と「枝番」を用意した例を図1に示します。(それぞれが主キーとなっています。) 枝番の初期値は 1 としています。
    顧客IDと枝番を用意した例
  2. ここでコピー登録機能を使い、同じIDで別のデータを登録します。

    注意

    主キー「ID」は自分で入力する方式としています。
    本設定では、同じIDで複数データを登録した際に枝番が付与される動作を実現しています。

    登録・更新画面では枝番は自動的に非表示となります。

    同IDで別データを登録する
  3. 枝番が増加し、「2」で登録されます。
    枝番が2になった

枝番は、主キーの値ごとに管理されています。IDの値が変われば、枝番は1になります。

異なる顧客IDの例

定義方法

  1. 顧客モデルに「ID」と「枝番」項目を用意します。
    ID項目は「文字列」型とします。
    顧客モデル
  2. 「ID」項目の詳細定義を開きます。
    自動採番のための「順序を利用する」のチェックをはずし、「開始番号」も空白とします。
    顧客IDの定義(順序を用いない)
  3. 次に、「枝番」項目の詳細定義を開きます。
    「主キーとして利用する」にチェックを入れます。
    また、「枝番として利用する」を有効にし、開始番号は1とします。
    枝番の定義

    重要

    この枝番指定は「主キーとして利用する」が有効でないと機能しません。
    (枝番を利用するモデルは、必ず複合キーになります。)

コピー登録時に枝番を付与する

主キーに順序を用いる(自動採番)が、コピー登録時は順序を使わない設定と併用することで「コピー登録時のみ(主キーの重複が発生するため)枝番が付与される」という例を説明します。

  1. 新規登録画面では、「ID」と「枝番」はいずれも非表示です。
    データを1件登録します。
    新規登録画面(順序を利用)
  2. 新規登録直後の画面です。枝番は「1」となっています。
    新規登録直後の詳細画面
  3. 続いて、コピー登録を行います。
    コピー登録では順序を使わない設定としているため、「ID」はコピー元と重複することになります。
    コピー登録
  4. IDは「1000」のまま、枝番が増加します。
    コピー登録直後の詳細画面

定義方法

  1. 「ID」項目は順序を用います。
    ただし、同時に「コピー登録時は順序を使わない」設定を有効にしています。
    顧客IDの定義(順序を用いる)
  2. 枝番の定義は図7と同様です。枝番指定は「主キーとして利用する」を有効とします。
    枝番の定義

制約

枝番をアルファベット表記とする

枝番を 1,2,3,... という整数値ではなく、A,B,C,... というアルファベット表記にする例です。

  1. 下図は主キー "A-0001" のデータを登録した直後です。ここでは枝番は含まれていません。
    主キーA-0001のデータを登録した
  2. コピー登録機能を用いて、同じ主キーでデータを再登録してみます。
    同じ主キーA-0001でデータを再登録する
  3. キーの末尾に「A」が付与されました。これが枝番です。
    枝番Aが付与された
  4. 再び同じ主キー「A-0001」で登録すると、今度は枝番 "B" が付与されます。 以降、枝番は A,B,C,...Z と付与され、Z の次は AA となります。
    枝番Bが付与された

定義方法

  1. 3つの項目「ID」・「枝番(隠し)」・「ID」を用意します。
    最初の「ID」は登録・更新画面で表示されます。
    もう一つの「ID」は表示用で、計算式によって枝番を末尾に結合した形で表示させるようにします。
    モデル定義

    各項目の詳細な設定は次のとおりです。

    項目名 項目ID 主キー 枝番 順序 開始番号 DB保存 入力時隠し 出力時隠し
    ID ID 文字列 - - - -
    枝番(隠し) branchid 数値 - 1
    ID IDshow 文字列 - - - - - -
  2. 表示時に用いる「ID」(IDshow) 項目には、次の自動計算式を適用します。
    CONCATENATE(${ID},A1FORMAT(${branchid}-1))

    関数A1FORMATは、Excelの列の命名規則に準拠したアルファベットを返します。

    表示時の式の設定

複合キーによる制約を回避したい場合

Wagbyは一部の機能で複合キーモデルを利用できないことがあります。
この制約を回避するために「単一キーで絞込機能を応用した枝番」を設定することもできます。

関連するページ

式の組み合わせではなく、スクリプトで実現することもできます。[詳細...]