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

WAGBY11 MANUAL / 17

登録・更新規則を設定する

主キーの値と既存データの有無から、行ごとの登録・更新を判定します。キー列と、値を書き換える列を区別できます。

最終更新日:

ダウンロードとアップロード更新の小目次へ

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

主キーの値と既存データの有無から、行ごとの登録・更新を判定します。キー列と、値を書き換える列を区別できます。

2. Wagby11で実現できること

2.1 行ごとの登録・更新

商品コードが文字列主キーの在庫データでは、既存のS001は更新、新しいS003は登録と判定します。コード自体は更新しません。

商品コードをキーにしたファイルを反映するためのモード設定。
商品コードをキーにしたファイルを反映するためのモード設定。

未変更トークンを使えば、更新時に現在値を残せます。入力例では、S001の備考へ未変更トークンを指定し、在庫数などを変更する内容を渡します。

2.2 空欄・null・現在値の保持

外部ファイルの空欄を「未設定」として取り込めます。通常、文字列の空欄は空文字になり、日付・日時・時刻・数値・真偽値の空欄は型変換エラーになります。空欄をnullへ変換する設定を有効にすると、これらを未設定として扱います。必須項目などの制約は引き続き検証します。

入力扱い
空欄通常は文字列の空文字。empty_as_nullが有効ならnull。
\N(既定のnullトークン)明示的にnullを設定。更新では現在値を消す。
\KEEP(既定の未変更トークン)更新時の現在値を保持。新規登録する行には使用できない。

全体で空欄をnullにし、備考だけは空文字にするなど、列ごとに上書きできます。列の指定を省略すると全体設定を引き継ぎます。全体は通常どおりにして、一部の列だけnullへ変換することもできます。

対象は長さ0の値で、CSV・TSVの空欄と引用符で囲んだ空文字("")、XLSXの空セルを含みます。半角・全角スペースだけの値は対象外で、前後の空白も取り除きません。null・未変更トークンと、エスケープされたトークンの解釈は変わりません。

更新行の空欄をnullへ変換すると、保存済みの値を消します。現在値を残すときは未変更トークンを使います。自動採番主キーの空欄は新規登録の判定に使い、全列が空欄の行の読み飛ばしやCSV・TSVの列不足エラーは変わりません。反映対象外のignore列にも値は反映しません。この設定はアップロード側の指定で、ダウンロードや通常のREST入力には影響しません。

3. AIへの指示例

最小限の指示例

商品コードがあれば更新し、まだない商品なら新しく登録してください。

AIはどの項目を主キーにするか、コードが空の場合や既存値の扱いを類推して補います。変更せず残す列と、値を消す列も分けて伝えます。

より詳細な指示例

商品コードは文字列主キーにし、UPSERTで既存コードを更新、未登録コードを登録します。商品コードはkey、在庫数などはwritableにしてください。S001の備考は未変更トークンで保持し、versionを入力ファイルへ含めないでください。
外部ファイルの空欄は全体でnullにし、備考だけは空文字として取り込んでください。更新時に空欄で現在値が消えることを説明し、値を残す場合は未変更トークンを使います。必須検証は維持してください。
既存のモデル・データ・権限を保持し、Wagby11のguide・referenceを確認してください。メニューと一般利用者向け操作マニュアルを更新し、生成・ビルド後に画面・出力ファイル・保存結果を確認してください。

4. 編集されるAppSchemaの例

以下は関連する定義の抜粋です。構文を覚えなくても、出力したい内容や取り込みの方針をAIへ伝えられます。

operation: UPSERT
columns:
  - { name_en: productCode, upload: key }
  - { name_en: productName, upload: writable }
  - { name_en: quantity, upload: writable }
  - { name_en: notes, upload: writable }
# 対応するvalue_codecのトークン例
# tokens: { null: '\N', unchanged: '\KEEP', escape: backslash }

現在のoperationはUPSERTです。自動採番主キーならキー列が空で登録、値があれば既存行の更新です。非自動採番の主キーは既存の有無で判定します。登録専用・更新専用のoperationは未対応で、権限による制限とは異なります。

空欄の扱いを加えた別の抜粋です。適用日と在庫数の空欄はnull、備考の空欄は空文字になります。download_idの有無にかかわらず、uploadsの定義へ指定します。

empty_as_null: true
columns:
  - { name_en: productCode, upload: key }
  - { name_en: effectiveDate, upload: writable }
  - { name_en: quantity, upload: writable }
  - { name_en: notes, upload: writable, empty_as_null: false }

5. 参考資料

guide:登録・更新規則を設定する
designer/docs/appschema/html/guide/09-data-transfer/10-create-and-update-rules.html
guide:アップロード列の扱い
designer/docs/appschema/html/guide/09-data-transfer/09-upload-columns.html
reference:ファイルアップロード一括更新
designer/docs/appschema/html/reference/12-file-upload.html