0

IDを複数のアイテムに関連付けるデータベーステーブルがあるとします。好きな食べ物でIDを言います。だからそれは


Id  FoodId
----------

1    1
1    54
1    543
2     42
2    4234

チェックリストボックスを使用して、お気に入りの食品の値を選択/選択解除できます

アイテムを編集した後にデータベースを更新するとき、ID 1でテーブル内の以前のすべてのエントリを削除してから、まったく新しいセットを入力しますか、それともこれを行うためのより良い方法がありますか?

4

2 に答える 2

0

最も簡単な方法は、あなたのアプローチです。しかし、これは最も遅く、冗長なデータベース操作を生成します。正しい方法は、メモリ内に古いリストと新しいリストを作成し、それに応じてdelete,insertステートメントを作成することです。

  1. 2 つのリストを比較し、両方のリストから同一の値をすべて削除します。
  2. DELETE「古い」リストに残っているすべての値のステートメントを 作成します。
  3. INSERT「新しい」リストの残りのすべての値のステートメントを 作成します。
于 2013-03-07T09:25:02.083 に答える
0
DELETE 
FROM favfood
WHERE id=@Id and foodid not in(new_list_of_food_ids)

// serialized new_list_of_food_ids

INSERT INTO favfood(id,foodid)
(SELECT @Id, [int] 
FROM       OPENXML (@idoc, '/ArrayOfInt/int',1)
WITH ([int]  int '.')
where [int] not in (select foodid from favfood where id=@Id))
于 2013-03-07T10:14:27.563 に答える