Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En un esquema, puede especificar una restricción de clave en un elemento o atributo mediante el elemento clave . El elemento o atributo en el que se especifica una restricción de clave debe tener valores únicos en cualquier instancia de esquema y no puede tener valores NULL.
La restricción de clave es similar a la restricción única, salvo que la columna en la que se define una restricción de clave no puede tener valores NULL.
En la tabla siguiente se describen los atributos msdata que puede especificar en el elemento clave .
Nombre del atributo | Descripción |
---|---|
msdata:ConstraintName | Si se especifica este atributo, su valor se usa como nombre de restricción. De lo contrario, el atributo name proporciona el valor del nombre de restricción. |
msdata:PrimaryKey | Si PrimaryKey="true" está presente, la propiedad de restricción IsPrimaryKey se establece en true, lo que lo convierte en una clave principal. La propiedad de columna AllowDBNull se establece en false, ya que las claves principales no pueden tener valores NULL. |
Al convertir el esquema en el que se especifica una restricción de clave, el proceso de asignación crea una restricción única en la tabla con la propiedad de columna AllowDBNull establecida en false para cada columna de la restricción. La propiedad IsPrimaryKey de la restricción unique también se establece en false a menos que se haya especificado msdata:PrimaryKey="true"
en el elemento de clave . Esto es idéntico a una restricción única en el esquema en el que PrimaryKey="true"
.
En el ejemplo de esquema siguiente, el elemento clave especifica la restricción de clave en el elemento 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>
El elemento clave especifica que los valores del elemento secundario CustomerID del elemento Customers deben tener valores únicos y no pueden tener valores NULL. Al traducir el esquema del lenguaje de definición de esquemas XML (XSD), el proceso de asignación crea la tabla siguiente:
Customers(CustomerID, CompanyName, Phone)
La asignación de esquema XML también crea un objeto UniqueConstraint en la columna CustomerID , como se muestra en el siguiente DataSet. (Por motivos de simplicidad, solo se muestran las propiedades pertinentes).
DataSetName: MyDataSet
TableName: customers
ColumnName: CustomerID
AllowDBNull: False
Unique: True
ConstraintName: KeyCustID
Table: customers
Columns: CustomerID
IsPrimaryKey: True
En el DataSet que se genera, la propiedad IsPrimaryKey de UniqueConstraint se establece en true porque el esquema especifica msdata:PrimaryKey="true"
en el elemento clave .
El valor de la propiedad ConstraintName de UniqueConstraint en DataSet es el valor del atributo msdata:ConstraintName especificado en el elemento clave del esquema.