다음을 통해 공유


SQLXML 4.0의 DiffGrams 소개

이 항목에서는 DiffGrams에 대한 간략한 소개를 제공합니다.

DiffGram 형식

일반적인 DiffGram 형식은 다음과 같습니다.

<?xml version="1.0"?>  
<diffgr:diffgram   
         xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"  
         xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"  
         xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
   <DataInstance>  
      ...  
   </DataInstance>  
   [<diffgr:before>  
        ...  
   </diffgr:before>]  
  
   [<diffgr:errors>  
        ...  
   </diffgr:errors>]  
</diffgr:diffgram>  

DiffGram 형식은 다음 블록으로 구성됩니다.

<DataInstance>
이 요소의 이름인 DataInstance는 이 설명서의 설명 용도로 사용됩니다. 예를 들어 DiffGram이 .NET Framework의 데이터 세트에서 생성된 경우 데이터 세트의 Name 속성 값이 이 요소의 이름으로 사용됩니다. 이 블록은 변경 후 수정되지 않은 데이터를 포함하여 모든 관련 데이터를 포함합니다. DiffGram 처리 논리는 diffgr:hasChanges 특성이 지정되지 않은 이 블록의 요소를 무시합니다.

<diffgr:before>
이 선택적 블록에는 업데이트하거나 삭제해야 하는 원래 레코드 인스턴스(요소)가 포함됩니다. DiffGram에 의해 수정(업데이트 또는 삭제)되는 모든 데이터베이스 테이블은 이전> 블록에서< 최상위 요소로 표시되어야 합니다.

<diffgr:errors>
이 선택적 블록은 DiffGram 처리 논리에서 무시됩니다.

DiffGram 주석

이러한 주석은 DiffGram 네임스페이스 "urn:schemas-microsoft-com:xml-diffgram-01"에 정의됩니다.

아이디
이 특성은 이전> 요소와 DataInstance 블록을 페어링<하는 <데 사용됩니다.>

hasChanges
삽입 또는 업데이트 작업의 경우 DiffGram은 삽입되거나 수정 값을 사용하여 이 특성을 지정해야 합니다. 이 특성이 없으면 처리 논리에서 DataInstance>의< 해당 요소가 무시되고 업데이트가 수행되지 않습니다. 작업 샘플은 DiffGram 예제(SQLXML 4.0)를 참조하세요.

parentID
이 특성은 DiffGram의 요소 간에 부모-자식 관계를 지정하는 데 사용됩니다. 이 특성은 이전> 블록에<만 나타납니다. 업데이트를 적용할 때 SQLXML에서 사용됩니다. 부모-자식 관계는 DiffGram의 요소가 처리되는 순서를 결정하는 데 사용됩니다.

DiffGram 처리 논리 이해

DiffGram 처리 논리는 특정 규칙을 사용하여 작업이 삽입, 업데이트 또는 삭제 작업인지 여부를 결정합니다. 이러한 규칙은 다음 표에 설명되어 있습니다.

수술 설명
삽입 DiffGram은 요소가 DataInstance> 블록에< 나타나지만 블록 앞에>는< 나타나지 않고 요소에 diffgr:hasChanges 특성이 지정된 경우(diffgr:hasChanges=inserted) 삽입 작업을 나타냅니다. 이 경우 DiffGram은 DataInstance> 블록에 지정된 레코드 인스턴스를< 데이터베이스에 삽입합니다.

diffgr:hasChanges 특성을 지정하지 않으면 요소가 처리 논리에 의해 무시되고 삽입이 수행되지 않습니다. 작업 샘플은 DiffGram 예제(SQLXML 4.0)를 참조하세요.
업데이트 DiffGram은 DataInstance> 블록에 해당 요소가 있는 이전 블록에 요소가 있고(즉, 두 요소< 모두 동일한 값을 가진 diffgr:id 특성이 있는) 업데이트 작업을 나타내며 diffgr:hasChanges 특성은 DataInstance> 블록의 요소에서<수정된 값으로 지정됩니다.><

DataInstance> 블록의 요소에<diffgr:hasChanges 특성을 지정하지 않으면 처리 논리에서 오류가 반환됩니다. 작업 샘플은 DiffGram 예제(SQLXML 4.0)를 참조하세요.

diffgr:parentID이전> 블록에< 지정된 경우 parentID로 지정된 요소의 부모-자식 관계가 레코드가 업데이트되는 순서를 결정하는 데 사용됩니다.
삭제 DiffGram은 요소가 이전> 블록에< 나타나지만 해당 <DataInstance> 블록에는 나타나지 않을 때 삭제 작업을 나타냅니다. 이 경우 DiffGram은 데이터베이스에서 이전> 블록에< 지정된 레코드 인스턴스를 삭제합니다. 작업 샘플은 DiffGram 예제(SQLXML 4.0)를 참조하세요.

diffgr:parentID이전> 블록에< 지정된 경우 parentID로 지정된 요소의 부모-자식 관계가 레코드가 삭제되는 순서를 결정하는 데 사용됩니다.

비고

매개 변수는 DiffGrams에 전달할 수 없습니다.