Memperbarui Data Menggunakan Xml Updategrams (SQLXML 4.0)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database

Saat memperbarui data yang ada, Anda harus menentukan <blok sebelum> dan <sesudah> . Elemen yang ditentukan dalam <blok sebelum> dan <sesudah> menjelaskan perubahan yang diinginkan. Updategram menggunakan elemen yang ditentukan di <blok sebelum> untuk mengidentifikasi rekaman yang ada dalam database. Elemen yang sesuai di <blok setelah> menunjukkan bagaimana catatan akan terlihat setelah menjalankan operasi pembaruan. Dari informasi ini, updategram membuat pernyataan SQL yang cocok dengan <blok setelah>. Updategram kemudian menggunakan pernyataan ini untuk memperbarui database.

Ini adalah format updategram untuk operasi pembaruan:

<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>
Elemen di blok <sebelum> mengidentifikasi rekaman yang ada dalam tabel database.

<updg:after>
Elemen di <blok setelah> menjelaskan bagaimana rekaman yang ditentukan di <blok sebelumnya> harus terlihat setelah pembaruan diterapkan.

Atribut mapping-schema mengidentifikasi skema pemetaan yang akan digunakan oleh updategram. Jika updategram menentukan skema pemetaan, elemen dan nama atribut yang ditentukan dalam <blok sebelum> dan <sesudah> harus cocok dengan nama dalam skema. Skema pemetaan memetakan elemen atau nama atribut ini ke tabel database dan nama kolom.

Jika updategram tidak menentukan skema, updategam menggunakan pemetaan default. Dalam pemetaan default, <ElementName> yang ditentukan dalam peta updategram ke tabel database dan elemen turunan atau atribut dipetakan ke kolom database.

Elemen di <blok sebelum> harus cocok hanya dengan satu baris tabel dalam database. Jika elemen cocok dengan beberapa baris tabel atau tidak cocok dengan baris tabel apa pun, updategram mengembalikan kesalahan dan membatalkan seluruh <blok sinkronisasi> .

Updategram dapat mencakup beberapa <blok sinkronisasi> . Setiap <blok sinkronisasi> diperlakukan sebagai transaksi. Setiap <blok sinkronisasi> dapat memiliki beberapa <blok sebelum> dan <sesudah> . Misalnya, jika Anda memperbarui dua rekaman yang ada, Anda dapat menentukan dua <pasangan sebelum> dan <sesudah> , satu untuk setiap rekaman yang diperbarui.

Menggunakan atribut updg:id

Saat beberapa elemen ditentukan dalam <blok sebelum> dan <sesudah> , gunakan atribut updg:id untuk menandai baris di <blok sebelum> dan <sesudah> . Logika pemrosesan menggunakan informasi ini untuk menentukan catatan apa di <sebelum> memblokir pasangan dengan rekaman apa di <blok setelah> .

Atribut updg:id tidak diperlukan (meskipun disarankan) jika salah satu hal berikut ini ada:

  • Elemen dalam skema pemetaan yang ditentukan memiliki atribut sql:key-fields yang ditentukan di dalamnya.

  • Ada satu atau beberapa nilai spesifik yang disediakan untuk bidang kunci dalam updategram.

Jika ada masalahnya, updategram menggunakan kolom kunci yang ditentukan dalam sql:key-fields untuk memasangkan elemen di <blok sebelum> dan <sesudah> .

Jika skema pemetaan tidak mengidentifikasi kolom kunci (dengan menggunakan sql:key-fields) atau jika updategram memperbarui nilai kolom kunci, Anda harus menentukan updg:id.

Catatan yang diidentifikasi dalam <blok sebelum> dan <sesudah> tidak harus dalam urutan yang sama. Atribut updg:id memaksa hubungan antara elemen yang ditentukan dalam <blok sebelum> dan <sesudah> .

Jika Anda menentukan satu elemen di <blok sebelum> dan hanya satu elemen yang sesuai di <blok setelah> , menggunakan updg:id tidak diperlukan. Namun, disarankan agar Anda menentukan updg:id tetap untuk menghindari ambiguitas.

Contoh

Sebelum Anda menggunakan contoh updategram, perhatikan hal berikut:

  • Sebagian besar contoh menggunakan pemetaan default (yaitu, tidak ada skema pemetaan yang ditentukan dalam updategram). Untuk contoh pembaruan lainnya yang menggunakan skema pemetaan, lihat Menentukan Skema Pemetaan Anotasi dalam Updategram (SQLXML 4.0).

  • Sebagian besar contoh menggunakan database sampel AdventureWorks. Semua pembaruan diterapkan ke tabel dalam database ini. Anda dapat memulihkan database AdventureWorks.

J. Memperbarui rekaman

Updategram berikut memperbarui nama belakang karyawan menjadi Fuller di tabel Person.Contact di database AdventureWorks. Updategram tidak menentukan skema pemetaan apa pun; oleh karena itu, updategram menggunakan pemetaan default.

<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>  

Catatan yang dijelaskan dalam blok sebelum> mewakili rekaman saat ini dalam database.< Updategram menggunakan semua nilai kolom yang ditentukan di <blok sebelum> untuk mencari rekaman. Dalam updategram ini, <blok sebelum> hanya menyediakan kolom ContactID; oleh karena itu, updategram hanya menggunakan nilai untuk mencari rekaman. Jika Anda menambahkan nilai LastName ke blok ini, updategram akan menggunakan nilai ContactID dan LastName untuk mencari.

Dalam updategram ini, <blok after> hanya menyediakan nilai kolom LastName karena ini adalah satu-satunya nilai yang sedang diubah.

Untuk menguji updategram
  1. Salin templat updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai UpdateLastName.xml.

  2. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

B. Memperbarui beberapa rekaman dengan menggunakan atribut updg:id

Dalam contoh ini, updategram melakukan dua pembaruan pada tabel HumanResources.Shift di database AdventureWorks:

  • Ini mengubah nama pergeseran hari asli yang dimulai pada pukul 07.00 dari "Hari" menjadi "Pagi Hari".

  • Ini menyisipkan shift baru bernama "Late Morning" yang dimulai pada 10:00.

Dalam updategram, atribut updg:id membuat asosiasi antara elemen di <blok sebelum> dan <sesudah> .

<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>  

Perhatikan bagaimana atribut updg:id memasangkan instans <pertama elemen HumanResources.Shift> di <blok sebelumnya> dengan instans <kedua elemen HumanResources.Shift> di <blok setelah> .

Untuk menguji updategram
  1. Salin templat updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai UpdateMultipleRecords.xml.

  2. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

C. Menentukan beberapa <blok sebelum> dan <sesudah>

Untuk menghindari ambiguitas, Anda dapat menulis updategram di Contoh B dengan menggunakan beberapa <pasangan sebelum> dan <sesudah> blok. Menentukan pasangan sebelum> dan sesudah adalah salah satu cara untuk menentukan beberapa pembaruan dengan minimal kebingungan<.>< Selain itu, jika setiap <blok sebelum> dan <sesudah> menentukan paling banyak satu elemen, Anda tidak perlu menggunakan atribut updg:id .

Catatan

Untuk membentuk pasangan, <tag setelah> harus segera mengikuti tag sebelum> yang< sesuai.

Dalam updategram berikut, pasangan sebelum> dan sesudah pertama< memperbarui nama shift untuk shift hari.>< Pasangan kedua menyisipkan rekaman shift baru.

<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>  
Untuk menguji updategram
  1. Salin templat updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai UpdateMultipleBeforeAfter.xml.

  2. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

D. Menentukan beberapa <blok sinkronisasi>

Anda dapat menentukan beberapa <blok sinkronisasi> dalam updategram. Setiap <blok sinkronisasi> yang ditentukan adalah transaksi independen.

Dalam updategram berikut, blok sinkronisasi> pertama< memperbarui rekaman dalam tabel Sales.Customer. Demi kesederhanaan, updategram hanya menentukan nilai kolom yang diperlukan; nilai identitas (CustomerID) dan nilai yang diperbarui (SalesPersonID).

Blok sinkronisasi> kedua< menambahkan dua rekaman ke tabel Sales.SalesOrderHeader. Untuk tabel ini, SalesOrderID adalah kolom jenis IDENTITAS. Oleh karena itu, updategram tidak menentukan nilai SalesOrderID di setiap <elemen Sales.SalesOrderHeader> .

Menentukan beberapa <blok sinkronisasi> berguna karena jika blok sinkronisasi> kedua< (transaksi) gagal menambahkan rekaman ke tabel Sales.SalesOrderHeader, blok sinkronisasi> pertama< masih dapat memperbarui catatan pelanggan di tabel 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>  
Untuk menguji updategram
  1. Salin templat updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai UpdateMultipleSyncs.xml.

  2. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

E. Menggunakan skema pemetaan

Dalam contoh ini, updategram menentukan skema pemetaan dengan menggunakan atribut mapping-schema . (Tidak ada pemetaan default; yaitu, skema pemetaan menyediakan pemetaan elemen dan atribut yang diperlukan dalam updategram ke tabel dan kolom database.)

Elemen dan atribut yang ditentukan dalam updategram mengacu pada elemen dan atribut dalam skema pemetaan.

Skema pemetaan XSD berikut ini memiliki <elemen Pelanggan>, <Pesanan>, dan <OD> yang memetakan ke tabel Sales.Customer, Sales.SalesOrderHeader, dan Sales.SalesOrderDetail dalam database.

<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>  

Skema pemetaan ini (UpdategramMappingSchema.xml) ditentukan dalam updategram berikut. Updategram menambahkan item detail pesanan dalam tabel Sales.SalesOrderDetail untuk pesanan tertentu. Updategram mencakup elemen berlapis: elemen OD> yang< bersarang di dalam <elemen Order>. Hubungan kunci primer/kunci asing antara kedua elemen ini ditentukan dalam skema pemetaan.

<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>  
Untuk menguji updategram
  1. Salin skema pemetaan di atas dan tempelkan ke dalam file teks. Simpan file sebagai UpdategramMappingSchema.xml.

  2. Salin templat updategram di atas dan tempelkan ke dalam file teks. Simpan file sebagai UpdateWithMappingSchema.xml di folder yang sama seperti yang digunakan untuk menyimpan skema pemetaan (UpdategramMappingSchema.xml).

  3. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

Untuk contoh pembaruan lainnya yang menggunakan skema pemetaan, lihat Menentukan Skema Pemetaan Anotasi dalam Updategram (SQLXML 4.0).

F. Menggunakan skema pemetaan dengan atribut IDREFS

Contoh ini menggambarkan bagaimana updategram menggunakan atribut IDREFS dalam skema pemetaan untuk memperbarui rekaman dalam beberapa tabel. Untuk contoh ini, asumsikan bahwa database terdiri dari tabel berikut:

  • Student(StudentID, LastName)

  • Kursus(CourseID, CourseName)

  • Pendaftaran (StudentID, CourseID)

Karena siswa dapat mendaftar di banyak kursus dan kursus dapat memiliki banyak siswa, tabel ketiga, tabel Pendaftaran, diperlukan untuk mewakili hubungan M:N ini.

Skema pemetaan XSD berikut ini menyediakan tampilan XML tabel dengan menggunakan <elemen Siswa>, <Kursus>, dan <Pendaftaran> . Atribut IDREFS dalam skema pemetaan menentukan hubungan antara elemen-elemen ini. Atribut StudentIDList pada <elemen Kursus> adalah atribut jenis IDREFS yang merujuk ke kolom StudentID dalam tabel Pendaftaran. Demikian juga, atribut EnrolledIn pada <elemen Student> adalah atribut jenis IDREFS yang merujuk ke kolom CourseID dalam tabel Pendaftaran.

<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>  

Setiap kali Anda menentukan skema ini dalam updategram dan menyisipkan rekaman dalam tabel Kursus, updategram menyisipkan rekaman kursus baru dalam tabel Kursus. Jika Anda menentukan satu atau beberapa ID siswa baru untuk atribut StudentIDList, updategram juga menyisipkan rekaman dalam tabel Pendaftaran untuk setiap siswa baru. Updategram memastikan bahwa tidak ada duplikat yang ditambahkan ke tabel Pendaftaran.

Untuk menguji updategram
  1. Buat tabel ini dalam database yang ditentukan di akar virtual:

    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. Tambahkan data sampel ini:

    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. Salin skema pemetaan di atas dan tempelkan ke dalam file teks. Simpan file sebagai SampleSchema.xml.

  4. Simpan updategram (SampleUpdategram) di folder yang sama yang digunakan untuk menyimpan skema pemetaan di langkah sebelumnya. (Updategram ini menjatuhkan siswa dengan StudentID="1" dari kursus 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. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan updategram.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

  6. Simpan dan jalankan updategram berikut seperti yang dijelaskan di langkah-langkah sebelumnya. Updategram menambahkan siswa dengan StudentID="1" kembali ke kursus CS102 dengan menambahkan rekaman di tabel Pendaftaran.

    <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. Simpan dan jalankan updategram berikutnya ini seperti yang dijelaskan di langkah-langkah sebelumnya. Updategram ini menyisipkan tiga siswa baru dan mendaftarkannya dalam kursus CS101. Sekali lagi, hubungan IDREFS menyisipkan rekaman dalam tabel Pendaftaran.

    <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>  
    

Ini adalah skema XDR yang setara:

<?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>  

Untuk contoh pembaruan lainnya yang menggunakan skema pemetaan, lihat Menentukan Skema Pemetaan Anotasi dalam Updategram (SQLXML 4.0).

Lihat juga

Pertimbangan Keamanan Updategram (SQLXML 4.0)