Sdílet prostřednictvím


Aktualizace dat pomocí XML Updategramů (SQLXML 4.0)

platí pro:SQL Serverazure SQL Database

Když aktualizujete existující data, musíte specifikovat jak bloky <před> tak <po> . Prvky uvedené v <blocích před> a <po> popisují požadovanou změnu. Updategram používá prvky, které jsou specifikovány v bloku <před,> k identifikaci existujících záznamů v databázi. Odpovídající prvek v následném bloku <> určují, jak by měly záznamy vypadat po provedení aktualizace operace. Z těchto informací updategram vytvoří SQL příkaz, který odpovídá afterbloku<>. Updategram pak použije tento příkaz k aktualizaci databáze.

Toto je formát aktualizačního gramu pro aktualizační operaci:

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
<updg:sync [mapping-schema="SampleSchema.xml"]  >  
   <updg:before>  
      <ElementName [updg:id="value"] .../>  
      [<ElementName [updg:id="value"] .../> ... ]  
   </updg:before>  
   <updg:after>  
      <ElementName [updg:id="value"] ... />  
      [<ElementName [updg:id="value"] .../> ...]  
   </updg:after>  
</updg:sync>  
</ROOT>  

<updg:before>
Prvky v bloku <před> identifikují existující záznamy v databázových tabulkách.

<updg:after>
Prvky v bloku <po vypadají> po tom, jak by měly vypadat záznamy uvedené v bloku <před> po aplikaci aktualizací.

Atribut mapping-schema identifikuje mapovací schéma, které má updategram použít. Pokud updategram specifikuje mapovací schéma, názvy prvků a atributů uvedené v bloku <před> a <po> musí odpovídat názvům ve schématu. Mapovací schéma mapuje tyto názvy prvků nebo atributů na názvy databázových tabulek a sloupců.

Pokud updategram nespecifikuje schéma, aktualizuje se výchozí mapování. Při výchozím mapování se <ElementName> uvedené v updategramu mapuje na databázovou tabulku a podřízené prvky nebo atributy na databázové sloupce.

Prvek v bloku <před> musí odpovídat pouze jednomu řádku tabulky v databázi. Pokud prvek buď odpovídá více řádkům tabulky, nebo neodpovídá žádnému řádku tabulky, updategram vrátí chybu a zruší celý<> synchronizační blok.

Updategram může obsahovat více<> synchronizačních bloků. Každý<> synchronizační blok je považován za transakci. Každý<> synchronizační blok může mít více <bloků před> a <po>. Například pokud aktualizujete dva existující záznamy, můžete zadat dva <páry před> a <po,> jeden pro každý aktualizovaný záznam.

Použití atributu updg:id

Když je <v bloku před> a <po> specifikováno více prvků, použijte atribut updg:id k označení řádků v <bloku před> a <po> . Logika zpracování využívá tyto informace k určení, který záznam v bloku <před> se spáruje s jakým záznamem v bloku <po.>

Atribut updg:id není nutný (i když doporučený), pokud existuje některý z následujících atributů:

  • Prvky ve specifikovaném mapovacím schématu mají atribut sql:key-fields definovaný na sobě.

  • V updategramu je pro klíčová pole uvedena jedna nebo více specifických hodnot.

Pokud je tomu tak, updategram používá sloupce klíčů specifikované v sql:key-fields k párování prvků v <bloku před> a <po> .

Pokud mapovací schéma neidentifikuje klíčové sloupce (pomocí sql:key-fields) nebo pokud updategram aktualizuje hodnotu sloupce klíče, musíte zadat updg:id.

Záznamy identifikované v bloku <před> a <po> nemusí být ve stejném pořadí. Atribut updg:id nutí asociaci mezi prvky specifikovanými v <bloku před> a <po> .

Pokud zadáte jeden prvek v bloku <před> a pouze jeden odpovídající prvek v bloku po bloku<>, použití updg:id není nutné. Doporučuje se však zadat updg:id i tak, abyste předešli nejasnosti.

Examples

Než použijete příklady s aktualizgramy, všimněte si následujícího:

  • Většina příkladů používá výchozí mapování (to znamená, že v aktualgramu není zadané žádné schéma mapování). Další příklady aktualizačních diagramů, které používají schémata mapování, najdete v tématu Určení schématu mapování s poznámkami v aktualgramu (SQLXML 4.0).

  • Většina příkladů používá databázi AdventureWorks. Všechny aktualizace se použijí na tabulky v této databázi. Databázi AdventureWorks můžete obnovit.

A. Aktualizace záznamu

Následující aktualizační gram aktualizuje příjmení zaměstnance na Fuller v tabulce Person.Contact v databázi AdventureWorks. Updategram nespecifikuje žádné mapovací schéma; proto Updategram používá výchozí mapování.

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
<updg:sync >  
<updg:before>  
   <Person.Contact ContactID="1" />  
</updg:before>  
<updg:after>  
   <Person.Contact LastName="Abel-Achong" />  
</updg:after>  
</updg:sync>  
</ROOT>  

Záznam popsaný v bloku <před> představuje aktuální záznam v databázi. Updategram využívá všechny hodnoty sloupců specifikované v bloku <před> vyhledáváním záznamu. V tomto updategramu <blok before> poskytuje pouze sloupec ContactID; proto updategram používá pouze tuto hodnotu k vyhledávání záznamu. Pokud byste do tohoto bloku přidali hodnotu Příjmení, aktualizační gram by použil jak ContactID, tak Příjmení k vyhledávání.

V tomto updategramu poskytuje<> after block pouze hodnotu sloupce Příjmení, protože je to jediná hodnota, která se mění.

Pro testování updategramu
  1. Zkopírujte výše uvedenou šablonu updategramu a vložte ji do textového souboru. Uložte soubor jako UpdateLastName.xml.

  2. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k vykonání updategramu.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

B. Aktualizace více záznamů pomocí atributu updg:id

V tomto příkladu aktualizační gram provádí dvě aktualizace tabulky HumanResources.Shift v databázi AdventureWorks:

  • Mění název původní denní směny, která začíná v 7:00 ráno, z "Den" na "Brzy ráno".

  • Přidává novou směnu nazvanou "Late Morning", která začíná v 10:00.

V updategramu atribut updg:id vytváří asociace mezi prvky v <bloku před> a <po> .

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
  <updg:sync >  
    <updg:before>  
       <HumanResources.Shift updg:id="x" Name="Day" />  
    </updg:before>  
    <updg:after>  
      <HumanResources.Shift updg:id="y" Name="Late Morning"   
                            StartTime="1900-01-01 10:00:00.000"  
                            EndTime="1900-01-01 18:00:00.000"  
                            ModifiedDate="2004-06-01 00:00:00.000"/>  
      <HumanResources.Shift updg:id="x" Name="Early Morning" />  
    </updg:after>  
  </updg:sync>  
</ROOT>  

Všimněte si, jak atribut updg:id spojuje první instanci <prvku HumanResources.Shift> v bloku <před s> druhou instancí elementu <HumanResources.Shift> v bloku <po.>

Pro testování updategramu
  1. Zkopírujte výše uvedenou šablonu updategramu a vložte ji do textového souboru. Uložte soubor jako UpdateMultipleRecords.xml.

  2. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k vykonání updategramu.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

C. Specifikace více <bloků před> a <po>

Aby se předešlo nejednoznačnosti, můžete aktualizační gram napsat v Příkladu B použitím více <párů před> a <po> bloků. Specifikace <párů před> a <po> je jedním ze způsobů, jak specifikovat více aktualizací s minimem zmatku. Také, pokud každý blok <před> a po> specifikuje< maximálně jeden prvek, nemusíte používat atribut updg:id.

Poznámka:

Pro vytvoření páru musí značka <"after> " následovat bezprostředně po odpovídající <značkě před> .

V následujícím updategramu první <pár před> a <po> aktualizuje název směny pro denní směnu. Druhý pár vkládá nový rekord směny.

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
  <updg:sync >  
    <updg:before>  
       <HumanResources.Shift ShiftID="1" Name="Day" />  
    </updg:before>  
    <updg:after>  
      <HumanResources.Shift Name="Early Morning" />  
    </updg:after>  
    <updg:before>  
    </updg:before>  
    <updg:after>  
      <HumanResources.Shift Name="Late Morning"   
                            StartTime="1900-01-01 10:00:00.000"  
                            EndTime="1900-01-01 18:00:00.000"  
                            ModifiedDate="2004-06-01 00:00:00.000"/>  
    </updg:after>  
  </updg:sync>  
</ROOT>  
Pro testování updategramu
  1. Zkopírujte výše uvedenou šablonu updategramu a vložte ji do textového souboru. Uložte soubor jako UpdateMultipleBeforeAfter.xml.

  2. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k vykonání updategramu.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

D. Specifikace více <> synchronizačních bloků

V updategramu můžete zadat více<> synchronizačních bloků. Každý<> specifikovaný synchronizační blok je nezávislá transakce.

V následujícím updategramu první<> synchronizační blok aktualizuje záznam v tabulce Sales.Customer (Prodeje). Pro zjednodušení aktualizační gram specifikuje pouze požadované hodnoty sloupců; hodnota identity (CustomerID) a hodnota, která se aktualizuje (SalesPersonID).

Druhý<> synchronizační blok přidává do tabulky Sales.SalesOrderHeader dva záznamy. Pro tuto tabulku je SalesOrderID sloupec typu IDENTITY. Proto updategram nespecifikuje hodnotu SalesOrderID v každém z <prvků Sales.SalesOrderHeader> .

Specifikace více<> synchronizačních bloků je užitečná, protože pokud druhý<> synchronizační blok (transakce) nedokáže přidat záznamy do tabulky Sales.SalesOrderHeader, první<> synchronizační blok může stále aktualizovat záznam zákazníka v tabulce Sales.Customer.

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
  <updg:sync >  
    <updg:before>  
      <Sales.Customer CustomerID="1" SalesPersonID="280" />  
    </updg:before>  
    <updg:after>  
      <Sales.Customer CustomerID="1" SalesPersonID="283" />  
    </updg:after>  
  </updg:sync>  
  <updg:sync >  
    <updg:before>  
    </updg:before>  
    <updg:after>  
   <Sales.SalesOrderHeader   
             CustomerID="1"  
             RevisionNumber="1"  
             OrderDate="2004-07-01 00:00:00.000"  
             DueDate="2004-07-13 00:00:00.000"  
             OnlineOrderFlag="0"  
             ContactID="378"  
             BillToAddressID="985"  
             ShipToAddressID="985"  
             ShipMethodID="5"  
             SubTotal="24643.9362"  
             TaxAmt="1971.5149"  
             Freight="616.0984"  
             rowguid="01010101-2222-3333-4444-556677889900"  
             ModifiedDate="2004-07-08 00:00:00.000" />  
   <Sales.SalesOrderHeader  
             CustomerID="1"  
             RevisionNumber="1"  
             OrderDate="2004-07-01 00:00:00.000"  
             DueDate="2004-07-13 00:00:00.000"  
             OnlineOrderFlag="0"  
             ContactID="378"  
             BillToAddressID="985"  
             ShipToAddressID="985"  
             ShipMethodID="5"  
             SubTotal="1000.0000"  
             TaxAmt="0.0000"  
             Freight="0.0000"  
             rowguid="10101010-2222-3333-4444-556677889900"  
             ModifiedDate="2004-07-09 00:00:00.000" />  
    </updg:after>  
  </updg:sync>  
</ROOT>  
Pro testování updategramu
  1. Zkopírujte výše uvedenou šablonu updategramu a vložte ji do textového souboru. Uložte soubor jako UpdateMultipleSyncs.xml.

  2. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k vykonání updategramu.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

E. Použití mapovacího schématu

V tomto příkladu aktualizační gram specifikuje mapovací schéma pomocí atributu mapping-schema . (Neexistuje žádné výchozí mapování; to znamená, že mapovací schéma poskytuje potřebné mapování prvků a atributů v updategramu na databázové tabulky a sloupce.)

Prvky a atributy uvedené v updategramu odkazují na prvky a atributy v mapovacím schématu.

Následující schéma mapování XSD obsahuje <prvky Customer>, <Order> a <OD> , které se mapují na tabulky Sales.Customer, Sales.SalesOrderHeader a Sales.SalesOrderDetail v databázi.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
<xsd:annotation>  
  <xsd:appinfo>  
    <sql:relationship name="CustomerOrder"  
          parent="Sales.Customer"  
          parent-key="CustomerID"  
          child="Sales.SalesOrderHeader"  
          child-key="CustomerID" />  
  
    <sql:relationship name="OrderOD"  
          parent="Sales.SalesOrderHeader"  
          parent-key="SalesOrderID"  
          child="Sales.SalesOrderDetail"  
          child-key="SalesOrderID" />  
  </xsd:appinfo>  
</xsd:annotation>  
  
  <xsd:element name="Customer" sql:relation="Sales.Customer" >  
   <xsd:complexType>  
     <xsd:sequence>  
        <xsd:element name="Order"   
                     sql:relation="Sales.SalesOrderHeader"  
                     sql:relationship="CustomerOrder" >  
           <xsd:complexType>  
              <xsd:sequence>  
                <xsd:element name="OD"   
                             sql:relation="Sales.SalesOrderDetail"  
                             sql:relationship="OrderOD" >  
                 <xsd:complexType>  
                  <xsd:attribute name="SalesOrderID" type="xsd:integer" />  
                  <xsd:attribute name="ProductID" type="xsd:integer" />  
                  <xsd:attribute name="UnitPrice" type="xsd:decimal" />  
                  <xsd:attribute name="OrderQty" type="xsd:integer" />  
                  <xsd:attribute name="UnitPriceDiscount" type="xsd:decimal" />   
                 </xsd:complexType>  
                </xsd:element>  
              </xsd:sequence>  
              <xsd:attribute name="CustomerID" type="xsd:string" />  
              <xsd:attribute name="SalesOrderID" type="xsd:integer" />  
              <xsd:attribute name="OrderDate" type="xsd:date" />  
           </xsd:complexType>  
        </xsd:element>  
      </xsd:sequence>  
      <xsd:attribute name="CustomerID"   type="xsd:string" />   
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  

Toto mapovací schéma (UpdategramMappingSchema.xml) je specifikováno v následujícím updategramu. Updategram přidává položku detailu objednávky do tabulky Sales.SalesOrderDetail pro konkrétní objednávku. Updategram obsahuje vnořené prvky: <OD> prvek vnořený uvnitř prvku <Řádu> . Vztah primárního klíče a cizího klíče mezi těmito dvěma prvky je specifikován v mapovacím schématu.

<ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
  <updg:sync mapping-schema="UpdategramMappingSchema.xml" >  
    <updg:before>  
       <Order SalesOrderID="43659" />  
    </updg:before>  
    <updg:after>  
      <Order SalesOrderID="43659" >  
          <OD ProductID="776" UnitPrice="2329.0000"  
              OrderQty="2" UnitPriceDiscount="0.0" />  
      </Order>  
    </updg:after>  
  </updg:sync>  
</ROOT>  
Pro testování updategramu
  1. Zkopírujte výše uvedené mapovací schéma a vložte ho do textového souboru. Uložte soubor jako UpdategramMappingSchema.xml.

  2. Zkopírujte výše uvedenou šablonu updategramu a vložte ji do textového souboru. Uložit soubor jako UpdateWithMappingSchema.xml do stejné složky, kde bylo uloženo mapovací schéma (UpdategramMappingSchema.xml).

  3. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k vykonání updategramu.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

Další příklady aktualizačních diagramů, které používají schémata mapování, najdete v tématu Určení schématu mapování s poznámkami v aktualgramu (SQLXML 4.0).

F. Použití mapovacího schématu s atributy IDREFS

Tento příklad ilustruje, jak updategramy využívají atributy IDREFS v mapovacím schématu k aktualizaci záznamů ve více tabulkách. Pro tento příklad předpokládejme, že databáze se skládá z následujících tabulek:

  • Student(StudentID, Příjmení)

  • Course(CourseID, CourseName)

  • Zápis (StudentID, CourseID)

Protože student může být zapsán do mnoha kurzů a kurz může mít mnoho studentů, je třetího stolu, tabulky zápisu, nutná k reprezentaci tohoto vztahu M:N.

Následující schéma mapování XSD poskytuje XML zobrazení tabulek pomocí <prvků Student>, <Kurz> a <Zápis.> Atributy IDREFS v mapovacím schématu specifikují vztah mezi těmito prvky. Atribut StudentIDList v prvku <Course> je typ IDREFS , který odkazuje na sloupec StudentID v tabulce Enrollment. Podobně atribut EnrolledIn na prvku <Student> je typ IDREFS , který odkazuje na sloupec CourseID v tabulce Enrollment.

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"  
            xmlns:sql="urn:schemas-microsoft-com:mapping-schema">  
<xsd:annotation>  
  <xsd:appinfo>  
    <sql:relationship name="StudentEnrollment"  
          parent="Student"  
          parent-key="StudentID"  
          child="Enrollment"  
          child-key="StudentID" />  
  
    <sql:relationship name="CourseEnrollment"  
          parent="Course"  
          parent-key="CourseID"  
          child="Enrollment"  
          child-key="CourseID" />  
  </xsd:appinfo>  
</xsd:annotation>  
  
  <xsd:element name="Course" sql:relation="Course"   
                             sql:key-fields="CourseID" >  
    <xsd:complexType>  
    <xsd:attribute name="CourseID"  type="xsd:string" />   
    <xsd:attribute name="CourseName"   type="xsd:string" />   
    <xsd:attribute name="StudentIDList" sql:relation="Enrollment"  
                 sql:field="StudentID"  
                 sql:relationship="CourseEnrollment"   
                                     type="xsd:IDREFS" />  
  
    </xsd:complexType>  
  </xsd:element>  
  <xsd:element name="Student" sql:relation="Student" >  
    <xsd:complexType>  
    <xsd:attribute name="StudentID"  type="xsd:string" />   
    <xsd:attribute name="LastName"   type="xsd:string" />   
    <xsd:attribute name="EnrolledIn" sql:relation="Enrollment"  
                 sql:field="CourseID"  
                 sql:relationship="StudentEnrollment"   
                                     type="xsd:IDREFS" />  
    </xsd:complexType>  
  </xsd:element>  
</xsd:schema>  

Kdykoli zadáte toto schéma v updategramu a vložíte záznam do tabulky kurzů, updategram vloží nový záznam kurzu do tabulky kurzů. Pokud zadáte jeden nebo více nových studentských ID pro atribut StudentIDList, updategram také vloží záznam do tabulky zápisů pro každého nového studenta. Aktualizační gram zajišťuje, že do tabulky zápisu nejsou přidány žádné duplikáty.

Pro testování updategramu
  1. Vytvořte tyto tabulky v databázi, která je specifikována ve virtuálním kořeni:

    CREATE TABLE Student(StudentID varchar(10) primary key,   
                         LastName varchar(25))  
    CREATE TABLE Course(CourseID varchar(10) primary key,   
                        CourseName varchar(25))  
    CREATE TABLE Enrollment(StudentID varchar(10)   
                                      references Student(StudentID),  
                           CourseID varchar(10)   
                                      references Course(CourseID))  
    
  2. Přidejte tato ukázková data:

    INSERT INTO Student VALUES ('S1','Davoli')  
    INSERT INTO Student VALUES ('S2','Fuller')  
    
    INSERT INTO Course VALUES  ('CS101', 'C Programming')  
    INSERT INTO Course VALUES  ('CS102', 'Understanding XML')  
    
    INSERT INTO Enrollment VALUES ('S1', 'CS101')  
    INSERT INTO Enrollment VALUES ('S1', 'CS102')  
    
  3. Zkopírujte výše uvedené mapovací schéma a vložte ho do textového souboru. Uložte soubor jako SampleSchema.xml.

  4. Uložit updategram (SampleUpdategram) do stejné složky, která byla použita pro ukládání mapovacího schématu v předchozím kroku. (Tento updategram vyřadí studenta s StudentID="1" z kurzu CS102.)

    <ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
      <updg:sync mapping-schema="SampleSchema.xml" >  
        <updg:before>  
            <Student updg:id="x" StudentID="S1" LastName="Davolio"  
                                 EnrolledIn="CS101 CS102" />  
        </updg:before>  
        <updg:after >  
            <Student updg:id="x" StudentID="S1" LastName="Davolio"  
                                 EnrolledIn="CS101" />  
        </updg:after>  
      </updg:sync>  
    </ROOT>  
    
  5. Vytvořte a použijte testovací skript SQLXML 4.0 (Sqlxml4test.vbs) k vykonání updategramu.

    Další informace naleznete v tématu Použití ADO ke spouštění dotazů SQLXML 4.0.

  6. Uložte a spusťte následující updategram, jak bylo popsáno v předchozích krocích. Updategram přidá studenta se StudentID="1" zpět do kurzu CS102 přidáním záznamu do tabulky zápisu.

    <ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
      <updg:sync mapping-schema="SampleSchema.xml" >  
        <updg:before>  
            <Student updg:id="x" StudentID="S1" LastName="Davolio"  
                                 EnrolledIn="CS101" />  
        </updg:before>  
        <updg:after >  
            <Student updg:id="x" StudentID="S1" LastName="Davolio"  
                                 EnrolledIn="CS101 CS102" />  
        </updg:after>  
      </updg:sync>  
    </ROOT>  
    
  7. Uložte a spusněte tento další updategram, jak bylo popsáno v předchozích krocích. Tento updategram vkládá tři nové studenty a zapisuje je do kurzu CS101. Opět vztah IDREFS vkládá záznamy do tabulky Zápis.

    <ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram">  
      <updg:sync mapping-schema="SampleSchema.xml" >  
        <updg:before>  
           <Course updg:id="y" CourseID="CS101"   
                               CourseName="C Programming" />  
        </updg:before>  
        <updg:after >  
           <Student updg:id="x1" StudentID="S3" LastName="Leverling" />  
           <Student updg:id="x2" StudentID="S4" LastName="Pecock" />  
           <Student updg:id="x3" StudentID="S5" LastName="Buchanan" />  
           <Course updg:id="y" CourseID="CS101"  
                               CourseName="C Programming"  
                               StudentIDList="S3 S4 S5" />  
        </updg:after>  
      </updg:sync>  
    </ROOT>  
    

Toto je ekvivalentní schéma XDR:

<?xml version="1.0" ?>  
<Schema xmlns="urn:schemas-microsoft-com:xml-data"  
        xmlns:dt="urn:schemas-microsoft-com:datatypes"  
        xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
  <ElementType name="Enrollment" sql:relation="Enrollment" sql:key-fields="StudentID CourseID">  
    <AttributeType name="StudentID" dt:type="id" />  
    <AttributeType name="CourseID" dt:type="id" />  
  
    <attribute type="StudentID" />  
    <attribute type="CourseID" />  
  </ElementType>  
  <ElementType name="Course" sql:relation="Course" sql:key-fields="CourseID">  
    <AttributeType name="CourseID" dt:type="id" />  
    <AttributeType name="CourseName" />  
  
    <attribute type="CourseID" />  
    <attribute type="CourseName" />  
  
    <AttributeType name="StudentIDList" dt:type="idrefs" />  
    <attribute type="StudentIDList" sql:relation="Enrollment" sql:field="StudentID" >  
        <sql:relationship  
                key-relation="Course"  
                key="CourseID"  
                foreign-relation="Enrollment"  
                foreign-key="CourseID" />  
    </attribute>  
  
  </ElementType>  
  <ElementType name="Student" sql:relation="Student">  
    <AttributeType name="StudentID" dt:type="id" />  
     <AttributeType name="LastName" />  
  
    <attribute type="StudentID" />  
    <attribute type="LastName" />  
  
    <AttributeType name="EnrolledIn" dt:type="idrefs" />  
    <attribute type="EnrolledIn" sql:relation="Enrollment" sql:field="CourseID" >  
        <sql:relationship  
                key-relation="Student"  
                key="StudentID"  
                foreign-relation="Enrollment"  
                foreign-key="StudentID" />  
    </attribute>  
  
    <element type="Enrollment" sql:relation="Enrollment" >  
        <sql:relationship key-relation="Student"  
                          key="StudentID"  
                          foreign-relation="Enrollment"  
                          foreign-key="StudentID" />  
    </element>  
  </ElementType>  
  
</Schema>  

Další příklady aktualizačních diagramů, které používají schémata mapování, najdete v tématu Určení schématu mapování s poznámkami v aktualgramu (SQLXML 4.0).

Viz také

Důležité informace o zabezpečení updategramu (SQLXML 4.0)