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 del lenguaje de definición de esquemas XML (XSD), el unique elemento especifica la restricción de exclusividad en un elemento o atributo. En el proceso de traducir un esquema XML en un esquema relacional, la restricción única especificada en un elemento o atributo del esquema XML se asigna a una restricción única en el DataTable del DataSet correspondiente que se genera.
En la tabla siguiente se describen los msdata atributos que puede especificar en el unique elemento .
| 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 name atributo proporciona el valor del nombre de restricción. |
| msdata:PrimaryKey | Si PrimaryKey="true" está presente en el unique elemento , se crea una restricción única con la IsPrimaryKey propiedad establecida en true. |
En el ejemplo siguiente se muestra un esquema XML que usa el unique elemento para especificar una restricción de unicidad.
<xs:schema id="SampleDataSet"
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:integer"
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="SampleDataSet" msdata:IsDataSet="true">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element ref="Customers" />
</xs:choice>
</xs:complexType>
<xs:unique msdata:ConstraintName="UCustID" name="UniqueCustIDConstr" > <xs:selector xpath=".//Customers" /> <xs:field xpath="CustomerID" /> </xs:unique>
</xs:element>
</xs:schema>
El unique elemento del esquema especifica que para todos los Customers elementos de una instancia de documento, el valor del CustomerID elemento secundario debe ser único. Al compilar el conjunto de datos, el proceso de asignación lee este esquema y genera la tabla siguiente:
Customers (CustomerID, CompanyName, Phone)
El proceso de asignación también crea una restricción única 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: True
Unique: True
ConstraintName: UcustID Type: UniqueConstraint
Table: Customers
Columns: CustomerID
IsPrimaryKey: False
En el DataSet que se genera, la propiedad IsPrimaryKey se establece en False para la restricción única. La unique propiedad de la columna indica que los CustomerID valores de columna deben ser únicos (pero pueden ser una referencia nula, tal como especifica la AllowDBNull propiedad de la columna).
Si modifica el esquema y establece el valor de atributo opcional msdata:PrimaryKey en True, se crea la restricción unique en la tabla. La propiedad de la AllowDBNull columna se establece en False y la propiedad de la IsPrimaryKey restricción se establece en True, lo que convierte la CustomerID columna en una columna de clave principal.
Puede especificar una restricción única en una combinación de elementos o atributos en el esquema XML. En el ejemplo siguiente se muestra cómo especificar que una combinación de CustomerID valores y CompanyName debe ser única para todo Customers en cualquier instancia agregando otro elemento xs:field en el esquema.
<xs:unique
msdata:ConstraintName="SomeName"
name="UniqueCustIDConstr" >
<xs:selector xpath=".//Customers" />
<xs:field xpath="CustomerID" />
<xs:field xpath="CompanyName" />
</xs:unique>
Esta es la restricción que se crea en el dataset resultante.
ConstraintName: SomeName
Table: Customers
Columns: CustomerID CompanyName
IsPrimaryKey: False