Как обновить отношение один-ко-многим из CheckBoxList, ListBox и т. Д.? - PullRequest
1 голос
/ 27 апреля 2010

Имеется 2 таблицы:

Персона

PersonsFavoriteColors

Человек может иметь один или несколько любимых цветов.Эти цвета обновляются с помощью элемента множественного выбора (CheckBoxList, ListBox с включенным множественным выбором).

Раньше, если я обновлял цвета этого человека, я бы:

  1. Начать транзакцию
  2. Удалить все записи цветов для человека
  3. Вставить записи для каждого выбранного цвета
  4. Подтвердить транзакцию

Является ли этостандартная и лучшая практика для работы с несколькими элементами управления, которые добавляют / обновляют / удаляют записи в дочерних таблицах "to-many"?

Спасибо!

Ответы [ 2 ]

1 голос
/ 27 апреля 2010

Обычно я не удаляю все старые цвета, а только те, которые больше не были избранными, и тогда я бы добавил только те, которые были действительно новыми.

0 голосов
/ 27 апреля 2010

Если вы не привязаны к двум таблицам, то относительно простым способом хранения значений, который вы описали, является использование массива в качестве типа данных избранных цветов вместо отдельной таблицы.

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

Если это приемлемый вариант, ваши инструкции по обновлению будут просто:

  1. Старт транзакции
  2. Обновить строку
  3. Подтвердить транзакцию
...