Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Constraint Class
Collapse the table of content
Expand the table of content

Constraint Class

Represents a constraint that can be enforced on one or more DataColumn objects.

For a list of all members of this type, see Constraint Members.

System.Object
   System.Data.Constraint
      System.Data.ForeignKeyConstraint
      System.Data.UniqueConstraint

[Visual Basic]
<Serializable>
MustInherit Public Class Constraint
[C#]
[Serializable]
public abstract class Constraint
[C++]
[Serializable]
public __gc __abstract class Constraint
[JScript]
public
   Serializable
abstract class Constraint

Thread Safety

This type is safe for multithreaded read operations. You must synchronize any write operations.

Remarks

A constraint is a rule used to maintain the integrity of the data in the DataTable. For example, when you delete a value that is used in one or more related tables, a ForeignKeyConstraint determines whether the values in the related tables are also deleted, set to null values, set to default values, or whether no action occurs. A UniqueConstraint, on the other hand, simply ensures that all values within a particular table are unique. For more information, see Adding Constraints to a Table.

A base Constraint constructor is not used. Primary or unique key constraints are created using the UniqueConstraint constructor, and foreign key constraints are created using the ForeignKeyConstraint constructor.

Example

[Visual Basic, C#, C++] The following example checks the collection of constraints for a DataTable and determines if each constraint is a UniqueConstraint or a ForeignKeyConstraint. The properties of the constraint are then displayed.

[Visual Basic] 
Private Sub GetConstraints(myTable As DataTable)
    Console.WriteLine()
    ' Print the table's name.
    Console.WriteLine("TableName: " + myTable.TableName)
    ' Iterate through the collection and print each name and type value.
    Dim cs As Constraint
    For Each cs In  myTable.Constraints
        Console.WriteLine("Constraint Name: " + cs.ConstraintName)
        Console.WriteLine("Type: " + cs.GetType().ToString())
        ' If the constraint is a UniqueConstraint, print its properties
        ' using a function below.
        If TypeOf cs Is UniqueConstraint Then
            PrintUniqueConstraintProperties(cs)
        End If
        ' If the constraint is a ForeignKeyConstraint, print its properties
        ' using a function below.
        If TypeOf cs Is ForeignKeyConstraint Then
            PrintForeigKeyConstraintProperties(cs)
        End If
    Next cs
End Sub

Private Sub PrintUniqueConstraintProperties(cs As Constraint)
    Dim uCS As UniqueConstraint
    uCS = CType(cs, UniqueConstraint)
    ' Get the Columns as an array.
    Dim colArray() As DataColumn
    colArray = uCS.Columns
    ' Print each column's name.
    Dim i As Integer
    For i = 0 To colArray.Length - 1
        Console.WriteLine("Column Name: " + colArray(i).ColumnName)
    Next i
End Sub

Private Sub PrintForeigKeyConstraintProperties(cs As Constraint)
    Dim fkCS As ForeignKeyConstraint
    fkCS = CType(cs, ForeignKeyConstraint)
    
    ' Get the Columns as an array.
    Dim colArray() As DataColumn
    colArray = fkCS.Columns
    
    ' Print each column's name.
    Dim i As Integer
    For i = 0 To colArray.Length - 1
        Console.WriteLine("Column Name: " + colArray(i).ColumnName)
    Next i
    Console.WriteLine()
    
    ' Get the related columns and print each columns name.
    colArray = fkCS.RelatedColumns
    For i = 0 To colArray.Length - 1
        Console.WriteLine("Related Column Name: " + colArray(i).ColumnName)
    Next i
    Console.WriteLine()
End Sub

[C#] 
private void GetConstraints(DataTable myTable){
   Console.WriteLine();
   // Print the table's name.
   Console.WriteLine("TableName: " + myTable.TableName);
   // Iterate through the collection and print each name and type value.
   foreach(Constraint cs in myTable.Constraints ) {
      Console.WriteLine("Constraint Name: " + cs.ConstraintName);
      Console.WriteLine("Type: " + cs.GetType().ToString());
      // If the constraint is a UniqueConstraint, print its properties using
      // a function below.
      if(cs is UniqueConstraint) {
         PrintUniqueConstraintProperties(cs);
      }
      // If the constraint is a ForeignKeyConstraint, print its properties
      // using a function below.
      if(cs is ForeignKeyConstraint) {
         PrintForeigKeyConstraintProperties(cs);
      }
   }
}

private void PrintUniqueConstraintProperties(Constraint cs){
   UniqueConstraint uCS;
   uCS = (UniqueConstraint) cs;
   // Get the Columns as an array.
   DataColumn[] colArray;
   colArray = uCS.Columns;
   // Print each column's name.
   for(int i = 0;i<colArray.Length ;i++) {
      Console.WriteLine("Column Name: " + colArray[i].ColumnName);
   }
}

private void PrintForeigKeyConstraintProperties(Constraint cs){
   ForeignKeyConstraint fkCS;
   fkCS = (ForeignKeyConstraint) cs;

   // Get the Columns as an array.
   DataColumn[] colArray;
   colArray = fkCS.Columns;

   // Print each column's name.
   for(int i = 0;i<colArray.Length ;i++) {
      Console.WriteLine("Column Name: " + colArray[i].ColumnName);
   }
   Console.WriteLine();

   // Get the related columns and print each columns name.
   colArray = fkCS.RelatedColumns ;
   for(int i = 0;i<colArray.Length ;i++) {
      Console.WriteLine("Related Column Name: " + colArray[i].ColumnName);
   }
   Console.WriteLine();
}

[C++] 
private:
 void GetConstraints(DataTable* myTable){
    Console::WriteLine();
    // Print the table's name.
    Console::WriteLine(S"TableName: {0}", myTable->TableName);
    // Iterate through the collection and print each name and type value.
    System::Collections::IEnumerator* myEnum = myTable->Constraints->GetEnumerator();
    while (myEnum->MoveNext())
    {
        Constraint* cs = __try_cast<Constraint*>(myEnum->Current);
       Console::WriteLine(S"Constraint Name: {0}", cs->ConstraintName);
       Console::WriteLine(S"Type: {0}", cs->GetType());
       // If the constraint is a UniqueConstraint, print its properties using
       // a function below.
       if(dynamic_cast<UniqueConstraint*>(cs)) {
          PrintUniqueConstraintProperties(cs);
       }
       // If the constraint is a ForeignKeyConstraint, print its properties
       // using a function below.
       if(dynamic_cast<ForeignKeyConstraint*>(cs)) {
          PrintForeigKeyConstraintProperties(cs);
       }
    }
 }
 
 void PrintUniqueConstraintProperties(Constraint* cs){
    UniqueConstraint* uCS;
    uCS = dynamic_cast<UniqueConstraint*> (cs);
    // Get the Columns as an array.
    DataColumn* colArray[];
    colArray = uCS->Columns;
    // Print each column's name.
    for(int i = 0;i<colArray->Length ;i++) {
       Console::WriteLine(S"Column Name: {0}", colArray[i]->ColumnName);
    }
 }
 
 void PrintForeigKeyConstraintProperties(Constraint* cs){
    ForeignKeyConstraint* fkCS;
    fkCS = dynamic_cast<ForeignKeyConstraint*> (cs);
 
    // Get the Columns as an array.
    DataColumn* colArray[];
    colArray = fkCS->Columns;
 
    // Print each column's name.
    for(int i = 0;i<colArray->Length ;i++) {
       Console::WriteLine(S"Column Name: {0}", colArray[i]->ColumnName);
    }
    Console::WriteLine();
 
    // Get the related columns and print each columns name.
    colArray = fkCS->RelatedColumns ;
    for(int i = 0;i<colArray->Length ;i++) {
       Console::WriteLine(S"Related Column Name: {0}", colArray[i]->ColumnName);
    }
    Console::WriteLine();
 }

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Namespace: System.Data

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework

Assembly: System.Data (in System.Data.dll)

See Also

Constraint Members | System.Data Namespace | ConstraintCollection | Constraints | ForeignKeyConstraint | UniqueConstraint

Show:
© 2015 Microsoft