Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans un schéma, vous pouvez spécifier une contrainte de clé sur un élément ou un attribut à l’aide de l’élément key . L’élément ou l’attribut sur lequel une contrainte de clé est spécifiée doit avoir des valeurs uniques dans n’importe quelle instance de schéma et ne peut pas avoir de valeurs Null.
La contrainte de clé est similaire à la contrainte unique, sauf que la colonne sur laquelle une contrainte de clé est définie ne peut pas avoir de valeurs Null.
Le tableau suivant présente les msdata attributs que vous pouvez spécifier dans l’élément key .
| Nom de l’attribut | Descriptif |
|---|---|
| msdata :ConstraintName | Si cet attribut est spécifié, sa valeur est utilisée comme nom de contrainte. Sinon, l’attribut name fournit la valeur du nom de la contrainte. |
| msdata :PrimaryKey | Si PrimaryKey="true" elle est présente, la IsPrimaryKey propriété de contrainte est définie sur true, ce qui en fait une clé primaire. La AllowDBNull propriété de colonne a la valeur false, car les clés primaires ne peuvent pas avoir de valeurs Null. |
Lors de la conversion d’un schéma dans lequel une contrainte de clé est spécifiée, le processus de mappage crée une contrainte unique sur la table avec la AllowDBNull propriété de colonne définie à false pour chaque colonne de la contrainte. La IsPrimaryKey propriété de la contrainte unique est également définie à false moins que vous n’ayez spécifié msdata:PrimaryKey="true" sur l’élément key . C'est identique à une contrainte unique dans le schéma où PrimaryKey="true".
Dans l’exemple de schéma suivant, l’élément key spécifie la contrainte de clé sur l’élément CustomerID .
<xs:schema id="cod"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element name="CustomerID" type="xs:string" minOccurs="0" />
<xs:element name="CompanyName" type="xs:string" minOccurs="0" />
<xs:element name="Phone" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MyDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Customers" />
</xs:choice>
</xs:complexType>
<xs:key msdata:PrimaryKey="true"
msdata:ConstraintName="KeyCustID"
name="KeyConstCustomerID" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
</xs:key>
</xs:element>
</xs:schema>
L’élément key spécifie que les valeurs de l’élément CustomerID enfant de l’élément Customers doivent avoir des valeurs uniques et ne peuvent pas avoir de valeurs Null. Lors de la traduction du schéma XSD (XML Schema Definition Language), le processus de mappage crée le tableau suivant :
Customers(CustomerID, CompanyName, Phone)
Le mappage de schéma XML crée également un UniqueConstraint sur la colonne CustomerID, comme indiqué dans l'exemple suivant DataSet. (Par souci de simplicité, seules les propriétés pertinentes sont affichées.)
DataSetName: MyDataSet
TableName: customers
ColumnName: CustomerID
AllowDBNull: False
Unique: True
ConstraintName: KeyCustID
Table: customers
Columns: CustomerID
IsPrimaryKey: True
Dans ce DataSet qui est généré, la IsPrimaryKey propriété de l’élément UniqueConstraint est définie true , car le schéma spécifie msdata:PrimaryKey="true" dans l’élément key .
La valeur de la propriété ConstraintName du UniqueConstraint dans le DataSet est la valeur de l’attribut msdata:ConstraintName spécifié dans l’élément key du schéma.