UI에서 저장 프로 시저로 데이터 테이블을 전달합니다. 해당 매개 변수의 유형은 테이블에 존재 삭제해야 할 데이터 테이블에없는 다음과 같은MERGE를 사용하여 데이터 삭제 또는 삽입
Personkey int
ComponentKey varchar
이 데이터는 테이블에 갈 필요 구조 및 데이터와 사용자 정의 테이블 필드입니다.
예 테이블 데이터
PersonKey ComponentKey
123 A1
456 B9
그리고 내 데이터 테이블 2 행 하나 일치하는 행 및 하나의 새로운 행
예 데이터 테이블 데이터
PersonKey ComponentKey
123 A1
786 Z6
결과가를 갖는다는 456/B9 행을 삭제해야하며 123/A1 행에 아무 것도 일어나지 않아야하며 786/Z6 행이 삽입되어야합니다.
저는 MERGE 문을 사용할 수 있다고 믿지만 그것을 형성하는 방법을 모르겠습니다.
내가 알지 못하는 부분은 삽입해야하지만 삭제 부분은 어디로 들어 왔는가?
MERGE Components
USING @passedInData
ON PersonKey = DatatblPersonKey AND ComponentKey = DatatblComponentKey
WHEN MATCHED THEN
-- DO nothing...
WHEN NOT MATCHED
INSERT (PersonKey, ComponentKey) VALUES (DatatblPersonKey, DatatblComponentey);
편집 : 데이터 테이블에는 동일한 개인 키에 대해 많은 행이 포함될 수 있지만 구성 요소 키는 다를 수 있습니다.
예 데이터 테이블 데이터
PersonKey ComponentKey
123 Z6
123 C5
예 테이블 데이터
PersonKey ComponentKey
123 A1
456 B9
상기 데이터 테이블을 삽입 한 후 그 결과이어야
PersonKey ComponentKey
123 Z6
123 C5
456 B9
공지 123/A1이 삭제되었음을 456/B9는 여전히 테이블에 있습니다.
나는 내 질문에 업데이트되었습니다. – andrewb
당신의 실행은 효과가 없을 수도 있지만 접근법은 효과적 일 수 있습니다. 귀하의 문제에 대한 데이터 및 코드화 된 솔루션의 구조를 포함하도록 답변을 편집했습니다. 다시 말하지만, 당신의 목표가 정확히 무엇인지 정의 할 때주의해야합니다. – btberry