Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie vorhandene Daten aktualisieren, müssen Sie sowohl die Vor>- als auch die Nachher-Blöcke<>angeben.< Die in den <Blöcken vor> und <nach> Blöcken angegebenen Elemente beschreiben die gewünschte Änderung. Das Updategram verwendet die Elemente, die im <vorherigen> Block angegeben sind, um die vorhandenen Datensätze in der Datenbank zu identifizieren. Die entsprechenden Elemente im <After-Block> geben an, wie die Datensätze nach der Ausführung des Aktualisierungsvorgangs aussehen sollen. Aus diesen Informationen erstellt das Updategram eine SQL-Anweisung, die dem nach> dem< Block entspricht. Das Updategram verwendet dann diese Anweisung, um die Datenbank zu aktualisieren.
Dies ist das Updatediagrammformat für einen Updatevorgang:
<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>
Die Elemente im <before-Block> identifizieren vorhandene Datensätze in den Datenbanktabellen.
<updg:after>
Die Elemente im <After-Block> beschreiben, wie die im <Vorblock> angegebenen Datensätze nach der Anwendung der Updates aussehen sollen.
Das mapping-schema Attribut identifiziert das Zuordnungsschema, das vom Updatediagramm verwendet werden soll. Wenn das Updategram ein Zuordnungsschema angibt, müssen die in den <Blöcken vor> und nach> Blöcken angegebenen Element- und< Attributnamen mit den Namen im Schema übereinstimmen. Das Zuordnungsschema ordnet diese Element- oder Attributnamen den Datenbanktabellen- und Spaltennamen zu.
Wenn ein Updategram kein Schema angibt, verwendet das Updategam die Standardzuordnung. In der Standardzuordnung ordnet der <im Updategram angegebene Elementname> der Datenbanktabelle und den untergeordneten Elementen oder Attributen den Datenbankspalten zu.
Ein Element im <before-Block> muss nur mit einer Tabellenzeile in der Datenbank übereinstimmen. Wenn das Element entweder mehreren Tabellenzeilen entspricht oder nicht mit einer Tabellenzeile übereinstimmt, gibt das Updatediagramm einen Fehler zurück und bricht den gesamten <Synchronisierungsblock> ab.
Ein Updategramm kann mehrere <Synchronisierungsblöcke> enthalten. Jeder <Synchronisierungsblock> wird als Transaktion behandelt. Jeder <Synchronisierungsblock> kann mehrere <Blöcke vor> und <nach> Blöcken haben. Wenn Sie z. B. zwei der vorhandenen Datensätze aktualisieren, können Sie zwei <Vor> - und <Nachpaare> angeben, eine für jeden Datensatz, der aktualisiert wird.
Verwenden des updg:id-Attributs
Wenn mehrere Elemente in den <Vor> - und <Nach-Blöcken> angegeben werden, verwenden Sie das updg:id Attribut, um Zeilen in den <Vor> - und <Nach-Blöcken> zu markieren. Die Verarbeitungslogik verwendet diese Informationen, um zu bestimmen, welcher Datensatz in den <Vor-Block-Paaren> mit welchem Datensatz im <After-Block> enthalten ist.
Das updg:id Attribut ist nicht erforderlich (obwohl empfohlen), wenn eine der folgenden Komponenten vorhanden ist:
Die Elemente im angegebenen Zuordnungsschema haben das
sql:key-fieldsattribut definiert.Für das Schlüsselfeld(n) im Updategram wird mindestens ein bestimmter Wert angegeben.
Wenn dies der Fall ist, verwendet das Updatediagramm die Schlüsselspalten, die in der sql:key-fields Kopplung der Elemente in den <Vor> - und <Nach-Blöcken> angegeben sind.
Wenn das Zuordnungsschema keine Schlüsselspalten (mithilfe von sql:key-fields) identifiziert oder wenn das Updategram einen Schlüsselspaltenwert aktualisiert, müssen Sie angeben updg:id.
Die Datensätze, die in den <Vor> - und <Nachher-Blöcken> identifiziert werden, müssen nicht in derselben Reihenfolge vorliegen. Das updg:id Attribut erzwingt die Zuordnung zwischen den Elementen, die in den <Blöcken vor> und <nachher> angegeben sind.
Wenn Sie ein Element im <vorherigen> Block und nur ein entsprechendes Element im <After-Block> angeben, ist die Verwendung updg:id nicht erforderlich. Es wird jedoch empfohlen, dass Sie trotzdem angeben updg:id , um Mehrdeutigkeit zu vermeiden.
Beispiele
Bevor Sie die Updategrammbeispiele verwenden, beachten Sie Folgendes:
In den meisten Beispielen wird die Standardzuordnung verwendet (d. a. im Updategram wird kein Zuordnungsschema angegeben). Weitere Beispiele für Updategramme, die Zuordnungsschemas verwenden, finden Sie unter Angeben eines kommentierten Zuordnungsschemas in einem Updategram (SQLXML 4.0).
Die meisten Beispiele verwenden die AdventureWorks-Beispieldatenbank. Alle Aktualisierungen werden auf die Tabellen in dieser Datenbank angewendet. Sie können die AdventureWorks-Datenbank wiederherstellen.
Ein. Aktualisieren eines Datensatzes
Das folgende Updategram aktualisiert den Nachnamen des Mitarbeiters in der Tabelle "Person.Contact" in der AdventureWorks-Datenbank auf "Fuller". Das Updategram gibt kein Zuordnungsschema an; Daher verwendet das Updategram die Standardzuordnung.
<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>
Der im <Vorblock> beschriebene Datensatz stellt den aktuellen Datensatz in der Datenbank dar. Das Updategram verwendet alle spaltenwerte, die <im Before-Block> angegeben sind, um nach dem Datensatz zu suchen. In diesem Updategram stellt der <Before-Block> nur die ContactID-Spalte bereit. Daher verwendet das Updatediagramm nur den Wert, um nach dem Datensatz zu suchen. Wenn Sie diesem Block den Wert "LastName" hinzufügen würden, verwendet das Updatediagramm sowohl die ContactID- als auch die Nachname-Werte, um zu suchen.
In diesem Updategram stellt der <After-Block> nur den Wert der Nachname-Spalte bereit, da dies der einzige Wert ist, der geändert wird.
So testen Sie das Updategramm
Kopieren Sie die oben gezeigte Updategramvorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei als UpdateLastName.xml.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
B. Aktualisieren mehrerer Datensätze mithilfe des attributs updg:id
In diesem Beispiel führt das Updategram zwei Aktualisierungen der Tabelle "HumanResources.Shift" in der AdventureWorks-Datenbank durch:
Er ändert den Namen der ursprünglichen Tagesschicht, die um 7:00 Uhr beginnt, von "Tag" in "Frühmorgen".
Es fügt eine neue Schicht namens "Late Morning" ein, die um 10:00 Uhr beginnt.
Im Updategram erstellt das updg:id Attribut Zuordnungen zwischen Elementen in den <Vor> - und <Nachher-Blöcken> .
<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>
Beachten Sie, wie das updg:id Attribut die erste Instanz des <HumanResources.Shift-Elements> im <before-Block> mit der zweiten Instanz des <HumanResources.Shift-Elements> im <After-Block> kombiniert.
So testen Sie das Updategramm
Kopieren Sie die oben gezeigte Updategramvorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei als UpdateMultipleRecords.xml.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
C. Angeben mehrerer <Vor>- und <Nachher-Blöcke>
Um Mehrdeutigkeit zu vermeiden, können Sie das Updatediagramm in Beispiel B schreiben, indem Sie mehrere <Vor> - und <Nachher-Blockpaare> verwenden. Das Angeben von< Vor>- und <Nach-Paaren> ist eine Möglichkeit, mehrere Updates mit einem Minimum an Verwirrung anzugeben. Außerdem müssen Sie das Attribut nicht verwendenupdg:id, wenn jeder der <Blöcke vor> und <nach> den Blöcken höchstens ein Element angibt.
Hinweis
Um ein Paar zu bilden, muss das <Nachtag> unmittelbar dem entsprechenden <Vortag> folgen.
Im folgenden Updategram aktualisiert das erste <Vor- und Nach-Paar>>den Schichtnamen für die Tagesschicht.< Das zweite Paar fügt einen neuen Schichtdatensatz ein.
<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>
So testen Sie das Updategramm
Kopieren Sie die oben gezeigte Updategramvorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei als UpdateMultipleBeforeAfter.xml.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
D. Angeben mehrerer <Synchronisierungsblöcke>
Sie können mehrere <Synchronisierungsblöcke> in einem Updatediagramm angeben. Jeder <angegebene Synchronisierungsblock> ist eine unabhängige Transaktion.
Im folgenden Updategram aktualisiert der erste <Synchronisierungsblock> einen Datensatz in der Tabelle "Sales.Customer". Aus Gründen der Einfachheit gibt das Updatediagramm nur die erforderlichen Spaltenwerte an; den Identitätswert (CustomerID) und den Wert, der aktualisiert wird (SalesPersonID).
Der zweite <Synchronisierungsblock> fügt der Tabelle "Sales.SalesOrderHeader" zwei Datensätze hinzu. Für diese Tabelle ist SalesOrderID eine IDENTITY-Typspalte. Daher gibt das Updategram nicht den Wert von SalesOrderID in jedem der <Elemente "Sales.SalesOrderHeader> " an.
Das Angeben mehrerer <Synchronisierungsblöcke ist nützlich, da der zweite Synchronisierungsblock>>(eine Transaktion) datensätze nicht zur Tabelle "Sales.SalesOrderHeader" hinzufügen kann, kann der erste Synchronisierungsblock den Kundendatensatz weiterhin in der Tabelle "Sales.Customer" aktualisieren.<<>
<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>
So testen Sie das Updategramm
Kopieren Sie die oben gezeigte Updategramvorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei als UpdateMultipleSyncs.xml.
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
E. Verwenden eines Zuordnungsschemas
In diesem Beispiel gibt das Updatediagramm ein Zuordnungsschema mithilfe des mapping-schema Attributs an. (Es gibt keine Standardzuordnung, d. h. das Zuordnungsschema stellt die erforderliche Zuordnung von Elementen und Attributen im Aktualisierungsdiagramm zu den Datenbanktabellen und -spalten bereit.)
Die im Updategramm angegebenen Elemente und Attribute beziehen sich auf die Elemente und Attribute im Zuordnungsschema.
Das folgende XSD-Zuordnungsschema enthält <Elemente "Customer>", <"Order>" und <"OD> ", die den Tabellen "Sales.Customer", "Sales.SalesOrderHeader" und "Sales.SalesOrderDetail" in der Datenbank zugeordnet sind.
<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>
Dieses Zuordnungsschema (UpdategramMappingSchema.xml) wird im folgenden Updategram angegeben. Das Updategram fügt ein Bestelldetailelement in der Tabelle "Sales.SalesOrderDetail" für eine bestimmte Bestellung hinzu. Das Updategramm enthält geschachtelte Elemente: ein <OD-Element> , das in einem <Order-Element> geschachtelt ist. Die Primärschlüssel-/Fremdschlüsselbeziehung zwischen diesen beiden Elementen wird im Zuordnungsschema angegeben.
<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>
So testen Sie das Updategramm
Kopieren Sie das obige Zuordnungsschema, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als UpdategramMappingSchema.xml.
Kopieren Sie die oben gezeigte Updategramvorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei als UpdateWithMappingSchema.xml im selben Ordner wie zum Speichern des Zuordnungsschemas (UpdategramMappingSchema.xml).
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Weitere Beispiele für Updategramme, die Zuordnungsschemas verwenden, finden Sie unter Angeben eines kommentierten Zuordnungsschemas in einem Updategram (SQLXML 4.0).
F. Verwenden eines Zuordnungsschemas mit IDREFS-Attributen
In diesem Beispiel wird veranschaulicht, wie updategrams die IDREFS-Attribute im Zuordnungsschema verwenden, um Datensätze in mehreren Tabellen zu aktualisieren. Gehen Sie in diesem Beispiel davon aus, dass die Datenbank aus den folgenden Tabellen besteht:
Student(StudentID, LastName)
Course(CourseID, CourseName)
Enrollment(StudentID, CourseID)
Da sich ein Schüler in vielen Kursen anmelden kann und ein Kurs viele Kursteilnehmer haben kann, ist die dritte Tabelle, die Tabelle "Registrierung", erforderlich, um diese M:N-Beziehung darzustellen.
Das folgende XSD-Zuordnungsschema stellt eine XML-Ansicht der Tabellen mithilfe der <Elemente "Student>", <"Course>" und "Enrollment>" bereit<. Die IDREFS-Attribute im Zuordnungsschema geben die Beziehung zwischen diesen Elementen an. Das StudentIDList-Attribut für das <Course-Element> ist ein IDREFS-Typ-Attribut , das auf die Spalte StudentID in der Registrierungstabelle verweist. Ebenso ist das Attribut "EnrollmentedIn " für das <Element "Student> " ein IDREFS-Typ-Attribut , das sich auf die Spalte "CourseID" in der Registrierungstabelle bezieht.
<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>
Wenn Sie dieses Schema in einem Updategramm angeben und einen Datensatz in die Kurstabelle einfügen, fügt das Updategram einen neuen Kursdatensatz in die Kurstabelle ein. Wenn Sie eine oder mehrere neue Schüler-IDs für das StudentIDList-Attribut angeben, fügt das Updatediagramm auch einen Datensatz in die Registrierungstabelle für jeden neuen Kursteilnehmer ein. Das Updategram stellt sicher, dass der Registrierungstabelle keine Duplikate hinzugefügt werden.
So testen Sie das Updategramm
Erstellen Sie diese Tabellen in der Datenbank, die im virtuellen Stamm angegeben ist:
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))Fügen Sie diese Beispieldaten hinzu:
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')Kopieren Sie das obige Zuordnungsschema, und fügen Sie es in eine Textdatei ein. Speichern Sie die Datei als SampleSchema.xml.
Speichern Sie das Updategram (SampleUpdategram) im selben Ordner, der zum Speichern des Zuordnungsschemas im vorherigen Schritt verwendet wird. (Dieses Updategram legt einen Kursteilnehmer mit StudentID="1" aus dem CS102-Kurs ab.)
<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>Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um das Updategramm auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Speichern und ausführen Sie das folgende Updategram, wie in den vorherigen Schritten beschrieben. Das Updategram fügt den Kursteilnehmer mit StudentID="1" wieder zum CS102-Kurs hinzu, indem er einen Datensatz in der Registrierungstabelle hinzufügt.
<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>Speichern und ausführen Sie dieses nächste Updategram, wie in den vorherigen Schritten beschrieben. Dieses Updategram fügt drei neue Kursteilnehmer ein und registriert sie im CS101-Kurs. Auch hier fügt die IDREFS-Beziehung Datensätze in die Registrierungstabelle ein.
<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>
Dies ist das entsprechende XDR-Schema:
<?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>
Weitere Beispiele für Updategramme, die Zuordnungsschemas verwenden, finden Sie unter Angeben eines kommentierten Zuordnungsschemas in einem Updategram (SQLXML 4.0).