Forguncy サポート

データベースへの更新操作に失敗しました。該当するレコードが2つ以上存在します。

フォローする

原因

削除や更新の対象レコードを特定できない場合にこのエラーが発生します。
例えば、主キーが設定されていない、または、日付型(datetime型など)を主キーに設定しいる場合などに発生します。

Forguncyでは、リンクテーブルに主キーがない場合、テーブルの最初のフィールドを主キーとして扱います。 このため、そのフィールドに重複した値が存在すると処理の対象レコードを特定できなくなります。

また、日付型の場合、データベースによって日付時刻型は、表現形式や、分解能(秒単位、ミリ秒単位、マイクロ秒単位…)から内部の持ち方まで独自の精度で扱うため、Forguncy側のリンクテーブルに取得できた値にずれが生じ対象レコードを特定できなくなります。
(例)
SQL Server側(datetime):2019-01-14 11:22:33.443 というレコードをリンクテーブルで接続すると、 Forguncy側(日付/時刻):2019/01/14 11:22:33 といった値になり、最後の「443」が抜け落ちます。
抜け落ちたことで、重複する値が発生すると、このエラーが発生します。

対策

リンクテーブルの更新・削除を行うには、外部テーブル側が以下の条件のいずれかに該当している必要があります。 リンクテーブルで接続したテーブル側(SQL ServerやOracle側のテーブル側)が以下のいずれかを満たすようにしてください。

  1. 主キーが設定された列がある(日付型(datetime型など)は主キーに使用できません)
  2. Nullを許容しない一意な列がある(ユニークキーに該当)
  3. IDENTITY列がある
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています
他にご質問がございましたら、リクエストを送信してください

コメント