本文へ移動
Wagby11
マニュアルのグループを選ぶ

WAGBY11 MANUAL / 02

IDを自動採番する

商品IDの入力を省いて登録時に一意なIDを割り当てる方法と、採番の開始値を指定する方法を説明します。

最終更新日:

モデルの小目次へ

1. このページで伝える機能

登録するたびにシステムがIDを割り当てる自動採番を利用できます。利用者がIDを考えて入力する必要がなく、保存後に割り当てられた値を確認できます。

この例では商品IDを自動採番します。手入力する商品コードとは別の項目です。

2. Wagby11で実現できること

2.1 IDを入力せずに登録する

商品の登録画面には、商品コード・商品名・単価の入力欄があります。自動採番する商品IDの入力欄はありません。「保存」を選ぶとIDが決まります。

商品IDの入力欄がなく商品コード、商品名、単価だけを入力する画面
商品IDは手入力しません。商品コードP001は利用者が入力する業務コードです。

2.2 保存後にIDを確認する

この例では、デスクライトに商品ID「1」、ブックスタンドに商品ID「2」が割り当てられました。検索一覧で別々のIDになっていることを確認できます。

商品ID1のデスクライトと商品ID2のブックスタンドが並ぶ一覧
登録した商品には異なるIDが割り当てられます。実際の番号は環境と登録状況により異なります。

この機能は内部IDの自動採番に使います。番号の欠番を詰めたり、欠番のない伝票番号を保証したりする機能として扱いません。親ごとの明細番号には、親子関係で扱う枝番を使います。

2.3 採番の開始値を指定する

新しく作る商品テーブルで「商品IDを1000から始めたい」といった場合は、自動採番の開始値を指定できます。空のテーブルへ最初に登録する商品のIDは1000、次は1001となります。開始値を指定しない場合は1です。上の画面例は、開始値を指定しない構成です。

指定できるのは、1~9223372036854775807の整数です。DBへ保存する自動採番の主キーにだけ指定できます。0、負数、小数、文字列、nullは指定できません。上限に到達すると、その後の採番は失敗します。

開始値を決めても、欠番のない連番になることは保証しません。また、他のモデルから参照する外部キーへ、この開始値が引き継がれるわけではありません。開始値は、IDを自動的に発行する側のモデルで指定します。

2.4 既存テーブルの採番位置を変える場合

開始値はテーブルを新規作成するときの設定です。既存テーブルの次回採番値を変更する設定ではありません。生成済みテーブルに対して開始値の設定を変更・削除すると、生成エラーになります。

3. AIへの指示例

最小限の指示例

商品IDを自動採番して、登録時に入力しなくてよいようにしてください。

AIは主キーや画面表示との関係を類推して仕様を補います。新規テーブルで開始値を省略した場合は1です。1000などの番号から始めたい場合は、開始値も伝えます。開始値、保存後の確認方法、既存の業務コードの扱いも明確にしたい場合は詳細を伝えます。

より詳細な指示例

商品モデルの商品IDを、自動採番する主キーにしてください。
商品登録時に利用者が商品IDを入力せず、保存後の詳細と検索一覧で割り当てられたIDを確認できるようにしてください。
商品コードは引き続き手入力する業務コードとして残してください。
新しく作成する商品テーブルでは、自動採番の開始値を1000にしてください。既存テーブルがある場合は開始値を変更せず、保存済みIDと現在の採番位置を確認し、必要な移行方法を先に説明してください。
複数の商品を登録し、異なる商品IDが割り当てられることを確認してください。
既存の主キーと保存済みデータがある場合は、変更の影響を先に確認してください。

4. 編集されるAppSchemaの例

entity.attributes内で、autoidとpk: trueを組み合わせます。単に数値型を指定するだけでは、自動採番の指定にはなりません。

- name: 商品ID
  name_en: productId
  type: autoid
  pk: true

新規テーブルで1000から採番する場合は、同じ項目へautoid_start: 1000を追加します。開始値を指定する属性は、type: autoid、pk: trueで、DBへ保存する項目である必要があります。開始値は引用符で囲まず、整数として指定します。

- name: 商品ID
  name_en: productId
  type: autoid
  pk: true
  autoid_start: 1000

autoid_startを省略すると開始値は1です。既存テーブルの次回採番値を変更する目的で、この設定を変更・削除しません。

検索結果にもIDを表示する場合は、一覧にproductIdを含めます。

# functions 内の商品検索の一覧定義
list:
  - name_en: productId
  - name_en: productCode
  - name_en: productName
  - name_en: unitPrice

autoidは64ビットの主キーをDB/JPAで自動採番する型です。登録リクエストにもIDを含めず、生成側に値の決定を任せます。

5. 参考資料

guide:エンティティ属性タイプ(自動採番ID)
designer/docs/appschema/html/guide/03-model/02-fields.html
guide:モデルを作成する(主キー)
designer/docs/appschema/html/guide/03-model/01-create-model.html
reference:entity(登録時の主キー入力)
designer/docs/appschema/html/reference/06-entity.html