Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Database
Wanneer je bestaande data bijwerkt, moet je zowel het <voor-> als <het na-blok> specificeren. De elementen die in de voor-> en na-blokken<>zijn gespecificeerd, beschrijven de gewenste verandering.< Het updategram gebruikt de elementen(s) die in het <voor-blok> zijn gespecificeerd om het bestaande record(en) in de database te identificeren. De bijbehorende elementen(s) in het <na-blok> geven aan hoe de records eruit moeten zien na het uitvoeren van de update-operatie. Uit deze informatie maakt het updategram een SQL-instructie die overeenkomt met het <after-blok> . Het updategram gebruikt deze instructie vervolgens om de database bij te werken.
Dit is het updategramformaat voor een update-operatie:
<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>
De elementen in het <voor-blok> identificeren bestaande records in de databasetabellen.
<updg:na>
De elementen in het <na-blok> beschrijven hoe de records die in het <voor-blok> zijn gespecificeerd, eruit moeten zien nadat de updates zijn toegepast.
Het mapping-schema-attribuut identificeert het mapping-schema dat door het updategram wordt gebruikt. Als het updategram een mappingschema specificeert, moeten de elementen- en attribuutnamen die in de <voor-> en <na-blokken> worden vermeld, overeenkomen met de namen in het schema. Het mappingschema koppelt deze namen van elementen of attribuutten aan de databasetabel- en kolomnamen.
Als een updategram geen schema specificeert, gebruikt de updategam standaardmapping. Bij standaardmapping wordt de <in het updategram gespecificeerde ElementName> gekoppeld aan de databasetabel en de kindelementen of attributen gekoppeld aan de databasekolommen.
Een element in het <voor-blok> moet overeenkomen met slechts één tabelrij in de database. Als het element overeenkomt met meerdere tabelrijen of helemaal niet overeenkomt, geeft het updategram een foutmelding en annuleert het gehele <synchronisatieblok> .
Een updategram kan meerdere <synchronisatieblokken> bevatten. Elke <synchronisatieblok> wordt behandeld als een transactie. Elk <sync-blok> kan meerdere <voor-> en <nablokken> hebben. Als je bijvoorbeeld twee bestaande records bijwerkt, kun je twee <voor-> en <naparen> specificeren, één voor elk bijgewerkt record.
Gebruik van het updg:id attribuut
Wanneer meerdere elementen zijn gespecificeerd in de <voor-> en <na-blokken> , gebruik je het updg:id-attribuut om rijen te markeren in de <voor-> en <na-blokken> . De verwerkingslogica gebruikt deze informatie om te bepalen welk record in het <voor-blok> met welk record in het <na-blok> wordt gekoppeld.
Het updg:id-attribuut is niet noodzakelijk (hoewel aanbevolen) als een van de volgende bestaat:
De elementen in het gespecificeerde mappingschema hebben het sql:key-fields attribuut gedefinieerd.
Er is één of meer specifieke waarden gegeven voor het sleutelveld(en) in het updategram.
Als een van beide het geval is, gebruikt het updategram de sleutelkolommen die zijn gespecificeerd in de sql:key-fields om de elementen in de <voor-> en <na-blokken> te koppelen.
Als het mappingschema geen sleutelkolommen identificeert (door sql:key-fields te gebruiken) of als het updategram een sleutelkolomwaarde bijwerkt, moet je updg:id specificeren.
De records die in de <voor-> en <na-blokken> worden geïdentificeerd, hoeven niet in dezelfde volgorde te zijn. Het updg:id-attribuut dwingt de associatie af tussen de elementen die in de <voor-> en <na-blokken> zijn gespecificeerd.
Als je één element in het <voor-blok> specificeert en slechts één overeenkomstig element in het <na-blok> , is het gebruik van updg:id niet nodig. Het wordt echter aanbevolen om updg:id toch op te geven om ambiguïteit te voorkomen.
Voorbeelden
Voordat je de voorbeelden van het updategram gebruikt, let op het volgende:
In de meeste voorbeelden wordt standaardtoewijzing gebruikt (dat wil gezegd, er wordt geen toewijzingsschema opgegeven in het updategram). Zie Een geannoteerd toewijzingsschema opgeven in een Updategram (SQLXML 4.0) voor meer voorbeelden van updategrammen die toewijzingsschema's gebruiken.
De meeste voorbeelden gebruiken de AdventureWorks-voorbeelddatabase. Alle updates worden toegepast op de tabellen in deze database. Je kunt de AdventureWorks-database herstellen.
Eén. Een record bijwerken
Het volgende updategram werkt de achternaam van de werknemer bij naar Fuller in de Person.Contact-tabel in de AdventureWorks-database. Het updategram specificeert geen mappingschema; Daarom gebruikt het updategram standaardmapping.
<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>
Het record dat in het <voor-blok> wordt beschreven, vertegenwoordigt het huidige record in de database. Het updategram gebruikt alle kolomwaarden die in het <voor-blok> zijn opgegeven om naar het record te zoeken. In dit updategram geeft het <voor-blok> alleen de kolom ContactID; daarom gebruikt het updategram alleen de waarde om naar het record te zoeken. Als je de Achternaamwaarde aan dit blok zou toevoegen, zou het updategram zowel de ContactID- als de Achternaamwaarde gebruiken om te zoeken.
In dit updategram geeft het <na-blok> alleen de kolomwaarde Achternaam omdat dit de enige waarde is die wordt gewijzigd.
Om het updategram te testen
Kopieer het bovenstaande updategram-sjabloon en plak het in een tekstbestand. Sla het bestand op als UpdateLastName.xml.
Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het updategram uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
B. Meerdere records bijwerken met het updg:id-attribuut
In dit voorbeeld voert het updategram twee updates uit op de HumanResources.Shift-tabel in de AdventureWorks-database:
Het verandert de naam van de oorspronkelijke dagdienst die om 7:00 uur begint van "Dag" naar "Vroeg Ochtend".
Er wordt een nieuwe dienst toegevoegd genaamd "Late Morning" die om 10:00 uur begint.
In het updategram creëert het updg:id-attribuut associaties tussen elementen in de <voor-> en <na-blokken> .
<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>
Let op hoe het updg:id-attribuut het eerste exemplaar van het <HumanResources.Shift-element> in het <before-blok> koppelt met het tweede exemplaar van het <HumanResources.Shift-element> in het <after-blok> .
Om het updategram te testen
Kopieer het bovenstaande updategram-sjabloon en plak het in een tekstbestand. Sla het bestand op als UpdateMultipleRecords.xml.
Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het updategram uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
C. Meerdere <voor-> en <na-blokken> specificeren
Om ambiguïteit te voorkomen, kun je het updategram in Voorbeeld B schrijven door meerdere <voor-> en <na-blokparen> te gebruiken. Het specificeren <van voor-> en <naparen> is een manier om meerdere updates te specificeren met minimale verwarring. Ook, als elk van de <voor-> en <na-blokken> maximaal één element specificeert, hoef je het updg:id-attribuut niet te gebruiken.
Opmerking
Om een paar te vormen, moet de <achterste> tag direct volgen op de bijbehorende <voor-tag> .
In het volgende updategram werkt het eerste <voor-> en <napaar> de naam van de dienst voor de dagdienst bij. Het tweede paar voegt een nieuw shiftrecord in.
<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>
Om het updategram te testen
Kopieer het bovenstaande updategram-sjabloon en plak het in een tekstbestand. Sla het bestand op als UpdateMultipleBeforeAfter.xml.
Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het updategram uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
D. Het specificeren van meerdere <synchronisatieblokken>
Je kunt meerdere <synchronisatieblokken> specificeren in een updategram. Elk <gespecificeerd synchronisatieblok> is een onafhankelijke transactie.
In het volgende updategram werkt het eerste <synchronisatieblok> een record bij in de Sales.Customer-tabel. Voor de eenvoud specificeert het updategram alleen de vereiste kolomwaarden; de identiteitswaarde (CustomerID) en de waarde die wordt bijgewerkt (SalesPersonID).
Het tweede <synchronisatieblok> voegt twee records toe aan de Sales.SalesOrderHeader-tabel. Voor deze tabel is SalesOrderID een kolom van het type IDENTITY. Daarom specificeert het updategram niet de waarde van SalesOrderID in elk van de <Sales.SalesOrderHeader-elementen> .
Het specificeren van meerdere <synchronisatieblokken> is nuttig omdat als het tweede <synchronisatieblok> (een transactie) geen records toevoegt aan de Sales.SalesOrderHeader-tabel, het eerste <synchronisatieblok> het klantrecord nog steeds kan bijwerken in de Sales.Customer-tabel.
<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>
Om het updategram te testen
Kopieer het bovenstaande updategram-sjabloon en plak het in een tekstbestand. Sla het bestand op als UpdateMultipleSyncs.xml.
Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het updategram uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
E. Gebruik van een mapping schema
In dit voorbeeld specificeert het updategram een mapping-schema door gebruik te maken van het mapping-schema-attribuut . (Er is geen standaardmapping; dat wil zeggen, het mappingschema levert de noodzakelijke mapping van elementen en attributen in het updategram naar de databasetabellen en -kolommen.)
De elementen en attributen die in het updategram zijn gespecificeerd, verwijzen naar de elementen en attributen in het mapping schema.
Het volgende XSD-mappingschema bevat <Customer>-, <Order>- en <OD-elementen> die worden gekoppeld aan de tabellen Sales.Customer, Sales.SalesOrderHeader en Sales.SalesOrderDetail in de 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>
Dit mappingschema (UpdategramMappingSchema.xml) wordt gespecificeerd in het volgende updategram. Het updategram voegt een orderdetailitem toe in de Sales.SalesOrderDetail-tabel voor een specifieke bestelling. Het updategram bevat geneste elementen: een <OD-element> genest binnen een <Order-element> . De relatie tussen primaire sleutel en vreemde sleutel tussen deze twee elementen wordt gespecificeerd in het mappingschema.
<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>
Om het updategram te testen
Kopieer het bovenstaande mappingschema en plak het in een tekstbestand. Sla het bestand op als UpdategramMappingSchema.xml.
Kopieer het bovenstaande updategram-sjabloon en plak het in een tekstbestand. Sla het bestand op als UpdateWithMappingSchema.xml in dezelfde map als waarmee het mappingschema werd opgeslagen (UpdategramMappingSchema.xml).
Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het updategram uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
Zie Een geannoteerd toewijzingsschema opgeven in een Updategram (SQLXML 4.0) voor meer voorbeelden van updategrammen die toewijzingsschema's gebruiken.
F. Gebruik van een mappingschema met IDREFS-attributen
Dit voorbeeld illustreert hoe updategrammen de IDREFS-attributen in het mapping schema gebruiken om records in meerdere tabellen bij te werken. Voor dit voorbeeld wordt aangenomen dat de database bestaat uit de volgende tabellen:
Student (StudentID, Achternaam)
Cursus(CourseID, CourseName)
Inschrijving (StudentID, CursusID)
Omdat een student zich voor veel vakken kan inschrijven en een cursus veel studenten kan hebben, is de derde tabel, de Inschrijvingstabel, vereist om deze M:N-relatie weer te geven.
Het volgende XSD-mappingschema biedt een XML-weergave van de tabellen door gebruik te maken van de <elementen Student>, <Cursus> en <Inschrijving> . De IDREFS-attributen in het mappingschema specificeren de relatie tussen deze elementen. Het StudentIDList-attribuut op het <Cursuselement> is een IDREFS-type attribuut dat verwijst naar de StudentID-kolom in de Inschrijvingstabel. Evenzo is het EnrolledIn-attribuut op het <Student-element> een IDREFS-type attribuut dat verwijst naar de CourseID-kolom in de Enrollment-tabel.
<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>
Telkens wanneer je dit schema specificeert in een updategram en een record invoegt in de Cursus-tabel, voegt het updategram een nieuw cursusrecord in de Cursus-tabel. Als je één of meer nieuwe studenten-ID's opgeeft voor het StudentIDList-attribuut, voegt het updategram ook een record in de Inschrijvingstabel voor elke nieuwe student. Het updategram zorgt ervoor dat er geen duplicaten aan de Enregistrment-tabel worden toegevoegd.
Om het updategram te testen
Maak deze tabellen aan in de database die in de virtuele wortel is gespecificeerd:
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))Voeg deze voorbeeldgegevens toe:
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')Kopieer het bovenstaande mappingschema en plak het in een tekstbestand. Sla het bestand op als SampleSchema.xml.
Sla het updategram (SampleUpdategram) op in dezelfde map die in de vorige stap werd gebruikt om het mappingschema op te slaan. (Dit updategram verwijdert een student met StudentID="1" uit de CS102-cursus.)
<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>Maak het SQLXML 4.0 Test Script (Sqlxml4test.vbs) aan en gebruik het om het updategram uit te voeren.
Zie ADO gebruiken om SQLXML 4.0-query's uit te voeren voor meer informatie.
Sla het volgende updategram op en voer het uit zoals beschreven in de voorgaande stappen. Het updategram voegt de student met StudentID="1" weer toe aan de CS102-cursus door een record toe te voegen aan de inschrijvingstabel.
<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>Sla dit volgende updategram op en voer dit volgende updategram uit zoals beschreven in de vorige stappen. Deze updategram voegt drie nieuwe studenten toe en schrijft hen in voor de CS101-cursus. Ook hier voegt de IDREFS-relatie records in in de Enrollment-tabel.
<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>
Dit is het equivalente 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>
Zie Een geannoteerd toewijzingsschema opgeven in een Updategram (SQLXML 4.0) voor meer voorbeelden van updategrammen die toewijzingsschema's gebruiken.