2010-04-27 2 views
1

을 감안할 때 2 개 테이블 :CheckBoxList, ListBox 등에서 일대 다 관계를 업데이트하는 방법은 무엇입니까?

사람

PersonsFavoriteColors

사람이 하나 또는 그 이상의 마음에 드는 색상을 가질 수 있습니다. 이 색상은 다중 선택 컨트롤 (CheckBoxList, 다중 선택 활성화 된 ListBox)로 업데이트됩니다. 나는 그 사람의 색깔을 업데이트하고 경우 과거

는, 나는 거라고 :

  1. 시작 트랜잭션을
  2. 를 선택한 각 색상
  3. 의 사람
  4. 삽입 기록을 모든 색상 기록 삭제 커밋 트랜잭션

이것은 다중 선택 컨트롤을 추가/업데이트/"to-many"자식 테이블의 레코드를 삭제 하시겠습니까?

감사합니다.

답변

1

나는 보통 모든 오래된 색상을 삭제하지 않고 오히려 더 이상 즐겨 찾기가 아닌 것들만 삭제 한 다음 실제로 새 것만 추가합니다.

+1

물론 커밋. 10 개를 선택하고 (이전에 삽입 한 경우) 2 개를 제거하면 해당 행을 삭제할 수 있지만 선택한 항목을 기반으로 일련의 업데이트/삭제가 아니라 닦아내고 복원하는 것이 더 쉬워 보였습니다. 10 개 중 2 개를 어떻게 제거 하시겠습니까? –

+0

나는 색깔이 단지 단순화 된 예라고 생각했지만 실제로 좋아하는 색깔이나 그와 비슷한 단순한 값이라면, 말한대로해도 괜찮을 것입니다. 2 중 10 제거하는 방법에 관한, 아마도 메모리에 컬렉션에 저장할 색을 다운로드 한 다음 List/Combo를 채우는 데 사용한 다음 두 가지 사이의 값을 비교하여 무엇이 있어야하는지 확인합니다. 제거/추가되었습니다. –

+0

감사합니다. 이것은 제가 사용했던 방법이었습니다. –

0

두 테이블에 고정되어 있지 않다면, 설명 된 방식으로 값을 저장하는 상대적으로 간단한 방법은 별도의 테이블 대신 선호하는 색상의 데이터 유형으로 배열을 사용하는 것입니다. 즉 허용 옵션의 경우

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

, 당신의 업데이트 지침은 단순히 다음과 같습니다

  1. 시작 트랜잭션
  2. 업데이트 행
  3. 가 트랜잭션을
+1

이것이 도움이된다면 이것은 MS SQL 2K5 프로젝트입니다. 구문 분석/분할해야 할 복합 필드에서 멀리 떨어져 있으려고합니다 - 또는 비트 비교기 (빨간색 = 8, 파란색 = 16 등 - 사용하려면 ANDing) –

관련 문제