2010-04-27 79 views
1

考慮2個表:如何從CheckBoxList,ListBox等更新一對多關係?

PersonsFavoriteColors

一個人可以有一個或多個喜愛的顏色。這些顏色通過多選控件(CheckBoxList,ListBox w/multi-select enabled)進行更新。

在過去,如果我更新了個人的色彩,我想:

  1. 開始事務
  2. 刪除所有彩色記錄的人
  3. 插入記錄每個選定的顏色
  4. Commit Transaction

這是處理多選控件的標準和最佳實踐,這些控件添加/更新/刪除「一對多」子表中的記錄?

謝謝!

回答

1

我通常不會刪除所有舊的顏色,而是僅僅是那些不再收藏夾,然後我只補充一點,實際上是新的人。

+1

肯定。如果他們選擇了10個(先前插入),然後他們刪除了其中的2個,我可以刪除這些行,但是執行擦除和恢復方法似乎更容易,而不是根據所選內容進行一系列更新/刪除。 你如何去除10 2? – 2010-04-27 17:58:14

+0

我認爲顏色只是一個簡單的例子,但如果它實際上就是這樣簡單的數值作爲它們最喜歡的顏色或相似,也許這將是確定做,因爲你說的。 關於如何刪除2的10,我可能會下載的顏色將它們存儲在內存中的集合中,然後使用該填充列表/組合,然後我只是在兩者之間比較值,看看應該是什麼移除/添加的。 – 2010-04-27 18:10:09

+0

謝謝。這是我用過的方法。 – 2010-06-18 12:45:59

0

如果你沒有鎖定在兩個表,一個比較簡單的方法來存儲值你所描述的方法是使用一個數組作爲最喜歡的顏色,而不是一個單獨的表中的數據類型。

http://www.postgresql.org/docs/8.0/interactive/arrays.html

如果這是一個可以接受的選擇,您的更新說明,簡直是:

  1. 開始事務
  2. 更新行
  3. 提交事務
+1

這是一個MS SQL 2K5項目,如果有幫助的話。我試圖遠離需要被分析/拆分的複合字段 - 或者是使用按位比較器的東西(紅色= 8,藍色= 16等 - 與之配合使用) – 2010-04-27 18:00:08