複合キーによる枝番
最終更新日: 2022年7月21日
R8 | R9
「顧客ID」と「枝番」を用意した例を図1に示します。(それぞれが主キーとなっています。)
枝番の初期値は 1 としています。
ここでコピー登録機能を使い、同じ顧客IDで登録してみます。
主キー「顧客ID」は入力する方式となっており、同じ顧客IDを入力したときに枝番が付与されるという動作を実現しています。
登録・更新画面では枝番は自動的に非表示となります。
枝番が増加します。(図3)
枝番は、データ1件毎に管理されています。顧客IDが変われば、枝番は1になります。
顧客モデルに「顧客ID」と「枝番」項目を用意した例を図5に示します。
顧客IDは主キーとします。この例では文字列とし、入力できるようにしました。(自動採番のための "順序" は使わないようにしています。)
枝番も同じく主キーとしています。かつ「枝番として利用する」を有効にしています。開始番号は1としました。
この枝番指定は「主キーとして利用する」が有効でないと機能しません。
主キーに順序を用いる(自動採番)が、コピー登録時は順序を使わない設定と併用することで「コピー登録時のみ(主キーの重複が発生するため)枝番が付与される」という例を説明します。
新規登録画面です。「顧客ID」と「枝番」はいずれも非表示です。
新規登録直後の画面です。枝番は "1" となっています。
次にコピー登録を行ってみます。コピー登録では順序を使わない設定としているため、「顧客ID」は重複することになります。
枝番が増加します。
顧客IDは順序を用いますが、同時に「コピー登録時は順序を使わない」設定を有効にしています。(図12)
枝番の定義は図7と同様です。枝番指定は「主キーとして利用する」を有効とします。
枝番を 1,2,3,... という整数値ではなく、A,B,C,... というアルファベット表記にする例を示します。
図14は主キー "A-0001" のデータを登録した直後です。ここでは枝番は含まれていません。
コピー登録機能を用いて、同じ主キーでデータを再登録してみます。(図15)
キーの末尾に "A" が付与されました。これが枝番です。
再び同じ主キー "A-0001" で登録すると、今度は枝番 "B" が付与されます。
以降、枝番は A,B,C,...Z と付与され、Z の次は AA となります。
3つの項目「顧客ID」「枝番(隠し)」「顧客ID」を用意します。最初の「顧客ID」は登録・更新画面で表示されます。もう一つの「顧客ID」は表示用で、計算式によって枝番を末尾に結合した形で表示させるようにします。
各項目の詳細な設定は次のとおりです。
表示時に用いる「顧客ID」(customeridshow) 項目には、次の自動計算式を適用します。
Wagbyは一部の機能で複合キーモデルを利用できないことがあります。
例1 主キーの手動入力
動作
注意
定義方法
重要
(枝番を利用するモデルは、必ず複合キーになります。)
例2 コピー登録時に枝番を付与する
動作
定義方法
制約
枝番をアルファベット表記とする
例
定義方法
項目名
項目ID
型
主キー
枝番
順序
開始番号
DB保存
入力時隠し
出力時隠し
顧客ID
customerid
文字列
○
-
-
-
○
-
○
枝番(隠し)
branchid
数値
○
○
-
1
○
○
○
顧客ID
customeridshow
文字列
-
-
-
-
-
○
-
CONCATENATE(${customerid},A1FORMAT(${branchid}-1))
複合キーによる制約を回避したい場合
この制約を回避するために「単一キーで絞込機能を応用した枝番」を設定することもできます。