現時点で問題が発生しており、このための簡単な解決策が必要です。条件の場合に挿入または更新する
この問題に関する別の回答は既に見つかりましたが、何も助けなかったので、私はINSERT INTOとINSERT ON DUPLICATE KEY UPDATEについて読んだことがあります。
既存のテーブルに新しい列を追加すると、移行前のテーブルの既存のレコードが既存の列でも空の値を持つレコードを取得するという問題があります。
私は、インサートまたはアップデートに従って、移行された新しいテーブルを埋めることを目的としているSPを実行しています。
- は、私は空の列を持つテーブルに既存のレコードを発見した場合を除いて、常に新しいレコードを挿入する(列番号 - 主キー - 満たされている)
「擬似コード」
int i = 0;
foreach(Record item in importing_data_table)
{
if(i < tableMigrated.Length && tableMigrated[i].Column IS NULL)
{
UPDATE tableMigrated[i] SET Column = item.Column
}
else
{
INSERT INTO item
}
i++;
}
注:前tableMigratedからすべての行を削除する(SQLテーブルの知識とC#の構文を混合)はこのようなものになるだろうその表への外部キーが存在するため、挿入は可能なではありません。そのアプローチを試す次のエラーがあります。 - DELETEステートメントがREFERENCE制約 "FK_blabla.Testing_testingTest.tableMigrated_Id"と競合しました。
注2:私の唯一のオプションはカーソルを使用しているのでしょうか?
あらかじめご協力いただきありがとうございます。
を見てみましょう。私は今週自分でそれを解決しました。 Updateは、影響を受ける行の数を示す整数を返します。 Updateがゼロを返したら、データを挿入します。プライマリキーの値がすでにデータベースに存在する場合は挿入できません。したがって、最初に更新を試み、影響を受けた行がゼロになった場合はInsertを使用します。 – jdweng