Rule 枚举

定义

指示强制执行 ForeignKeyConstraint 时发生的操作。

public enum class Rule
public enum Rule
type Rule = 
Public Enum Rule
继承

字段

Cascade 1

删除或更新相关的行。 这是默认设置。

None 0

不对相关的行采取任何操作。

SetDefault 3

将相关的行中的值设置为 DefaultValue 属性中包含的值。

SetNull 2

将相关的行中的值设置为 DBNull

示例

' The next line goes into the Declarations section of the module:
' SuppliersProducts is a class derived from DataSet.
Private suppliersProducts As SuppliersProducts

Private Sub CreateConstraint()
    ' Declare parent column and child column variables.
    Dim parentColumn As DataColumn
    Dim childColumn As DataColumn
    Dim fkeyConstraint As ForeignKeyConstraint

    ' Set parent and child column variables.
    parentColumn = suppliersProducts.Tables("Suppliers").Columns("SupplierID")
    childColumn = suppliersProducts.Tables("Products").Columns("SupplierID")
    fkeyConstraint = New ForeignKeyConstraint( _
        "SupplierFKConstraint", parentColumn, childColumn)

    ' Set null values when a value is deleted.
    fkeyConstraint.DeleteRule = Rule.SetNull
    fkeyConstraint.UpdateRule = Rule.Cascade
    fkeyConstraint.AcceptRejectRule = AcceptRejectRule.Cascade

    ' Add the constraint, and set EnforceConstraints to true.
    suppliersProducts.Tables("Products").Constraints.Add(fkeyConstraint)
    suppliersProducts.EnforceConstraints = True
End Sub

注解

这些Rule值设置为 UpdateRule 在 对象的 中找到DataTableForeignKeyConstraint 对象的 ConstraintCollectionDeleteRule 属性。

这些 Rule 值确定删除或更新列中的值时发生的操作。 在两者中,在设置规则时,删除值更重要,更需要注意。

在删除某个值的情况下, Cascade 指定同时删除包含该值的所有行。 SetNull 指定将所有子列中的值设置为 null 值。 SetDefault 指定将所有子列设置为列的默认值。 None 指定不会发生任何操作,但会生成异常。

在更新值的情况下, Cascade 指定使用新值同样更新所有子列。 SetNull 指定将所有子列设置为 null 值。 SetDefault 指定将所有子列值设置为默认值。 None 指定不执行任何操作,但会生成异常。

DataSet除非 EnforceConstraints 属性为 true,否则不会对 强制实施约束。

AcceptChanges调用 方法时, AcceptRejectRule 将进一步确定发生的操作。

适用于

另请参阅