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

WAGBY11 MANUAL / 02

重複する値の登録を防ぐ

商品コードに一意制約を設定し、登録・更新時の重複を防ぐ方法を説明します。

最終更新日:

モデルの小目次へ

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

商品コードや会員番号など、同じ値を複数のデータへ登録したくない項目には一意制約を設定します。主キーではない項目でも、登録・更新時の重複を防げます。

この例では、商品IDとは別に入力する商品コードの重複を禁止します。商品名は一意制約の対象にしていません。

2. Wagby11で実現できること

2.1 登録済みのコードを別の商品に使わせない

  1. 商品コード「P002」でブックスタンドを登録します。
  2. 「+ 新規」を開き、商品コードに同じ「P002」、商品名に「別の商品」、単価に500を入力します。
  3. 「保存」を選ぶと、重複のエラーが表示されます。
商品コードP002の重複登録で一意項目の値はすでに使われていますと表示されたエラー
「一意項目の値はすでに使われています。別の値を入力してください。」と表示され、登録は完了しません。

更新時も同様です。別の商品を編集し、コードを登録済みの「P002」へ変えようとするとエラーになり、元の保存内容は変わりません。自分自身のコードをそのまま保持する通常の更新はできます。

2.2 必須入力と重複禁止を組み合わせる

「入力されていること」と「他の商品と同じでないこと」は別の条件です。この例では商品コードを必須にし、さらに一意制約で重複を禁止しています。

複数項目の組み合わせを一意にする設定もあります。たとえば「利用者と施設の組が重複しない」といった用途です。詳しい指定方法は参考資料の一意制約を参照してください。

3. AIへの指示例

最小限の指示例

商品コードが他の商品と重複しないようにしてください。

AIは一意制約の設定や適用する操作を類推して補います。必須条件、既存データの扱い、コードの同一視の条件が決まっている場合は追加で指定します。

より詳細な指示例

商品コードを、他の商品と重複できない必須項目にしてください。
商品IDを主キーとして維持し、商品コードには別に一意制約を設定してください。
商品名は同じでも登録できる設定を維持してください。
新規登録と更新の両方で、別の商品の商品コードを使うと保存できないことを確認してください。
既存データがある場合は重複の有無を先に調べ、制約追加前に必要な整理を説明してください。
大文字・小文字などを同じコードとみなす必要がある場合は、現在のDBと設定での扱いを確認してください。

4. 編集されるAppSchemaの例

商品コードに名前付きの一意制約を設定します。以下はentity.attributes内の抜粋です。

- name: 商品コード
  name_en: productCode
  type: string
  length: 30
  not_null: true
  unique: uq_product_code
  validation:
    presence:
      create: error
      update: error

uniqueの値はuq_product_codeという制約名です。trueやfalseを指定する形式ではありません。この定義からデータベースの一意制約が生成されます。

not_nullは保存時のNULLを禁止し、validation.presenceは登録・更新の必須チェックを指定します。この例の標準H2環境では、大文字・小文字は区別されます。例えば「P002」と「p002」は別の値です。

5. 参考資料

guide:エンティティ属性タイプ(一意制約)
designer/docs/appschema/html/guide/03-model/02-fields.html
guide:登録・更新の必須チェック
designer/docs/appschema/html/guide/04-validation/01-required.html
reference:entity(unique)
designer/docs/appschema/html/reference/06-entity.html