Many2Manyの関連をレコードピッカーで選択した際に両方のテーブルのINSERTが行われてしまう

* バグの説明

2つのテーブルを多:多のリレーションで関連付け(中間テーブル自動作成・逆フィールドなし)し、片方のテーブルのレコードを作成しようとした際にもう片方のテーブルのレコード作成時に関連先のレコードのINSERTが行われてしまう現象を確認しました。
この現象はフィールドコンポーネントが「レコードピッカー」「サブテーブル」のケースで発生し、「選択」の場合は発生しません。

具体的には、下記画像のテーブル構成に対して棚卸結果 のレコードを追加しようとした際に、社員証のレコードのINSERTが発行されてしまいます。

関係する最低限のフィールドを用意したテーブル(下記画像のtest)で再現を試みましたが再現できていません。

* 環境

  • NocoBase のバージョン:v1.5.6

  • データベースの種類とバージョン:MySQL

  • OS:Windows

  • デプロイ方法:Docker

  • Docker イメージのバージョン:nocobase/nocobase:latest

* 再現手順

不明(再現できていない)

期待される動作

棚卸結果に対するINSERTのみが行われる

スクリーンショット

1 Like

ご連絡いただいた内容を確かに受け取り、現在確認中です。ご報告いただきまして、心より感謝申し上げます。どうぞよろしくお願いいたします。

1 Like

力一ドID "フィールドは、データテーブルで重複を許さないように設定されていますか?

はい、カードIDフィールドは重複を許さないよう設定しています。
ただ、UI上から保存しようとしているレコードはカードIDフィールドがある社員証コレクションのレコードではなく、棚卸結果コレクションのレコードであるため、力一ドIDフィールドの設定は影響しないはずです。

多くの設定情報が不足しているため、公式サイトでデモを適用し、URLの複製を与えてください。

1 Like

公式サイトのデモ上に環境を構築しました。
URLはこちらです。

本現象は、「外部キーの指定が不適切なフィールドをレコードピッカーのテーブルに表示している」場合に発生する模様です。
employee_cards.officeフィールド)

お手数おかけしますがご確認のほどよろしくお願いいたします。

外部キーは主キーidを使用できない

ご確認いただきありがとうございます。

おっしゃるとおり、主キーを外部キーとして指定した場合に発生するため、正常なユースケースでは発生しない現象です。
ただ、直接関係のない棚卸結果レコードを登録しようとした際に発生することと、レコードピッカー上で拠点フィールドを表示しているか否かによって挙動が変わることから、社員証コレクションにインサートが行われるのは本来意図した動作ではないように感じます。

潜在的なバグである可能性があるため報告させていただいた次第です。

この不正確な設定を変更することで、問題は解決しました!