* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна!
Ограничения Foreign Key
8 февраля 2009
Ограничение Foreign Key Constraint (внешний ключ) определяет изменение дочерних строк при модификации или удалении родительской строки. Чтобы создать объект Foreign Key Constraint, необходимо указать родительское и дочернее поле, например: Visual Basic .NET
Dim myConstraint As New ForeignKeyConstraint(CustomersTbl.Columns("CustomerID"), QrdersTbl.Columns{"CustomerID")) Visual C# ForeignKeyConstraint myConstraint = new ForeignKeyConstraint (Gust omersTbl. Col urnns[ "Customer ID"], OrdersTbl.Columns["CustomerlD"]); Подобно UniqueConstraint, для активации ограничение ForeignKeyConstraint не- обходимо добавить к набору Constraints таблицы, содержащей родительское поле: Visual Basic .NET CustomersTbl.Constraints.Add(myConstraint) Visual C# CustomersTbl.Constraints.Add(myConstraint); Ограничение ForeignKey'Constraint определяет три правила, регламентирующих отношения между родительским и дочерним полями: • UpdateRule — применяется при модификации родительской строки; • DeleteRule — применяется при удалении родительской строки; • AcceptRejectRule — применяется каждый раз при вызове метода AcceptChanges объекта DataTable, для которого определено ограничение. Эти правила представлены свойствами объекта ограничения, которые могут при- нимать значения, описанные в таблице 6-2. Таблица 6-2. Свойства объекта ограничения и их возможные значения Значение Описание Cascade Модификации родительской строки реплицируются в дочерние строки None Модификации родительской строки не отражаются на дочерних строках; в результате могут появиться дочерние строки со ссылками на недействительные родительские строки SetDefault Полю внешнего ключа в связанных дочерних записях присваивается значение по умолчанию (заданное свойством DefaultValue этого ключа) SetNull Полю внешнего ключа в дочерней таблице присваивается значение DBNulf; в результате в дочерней таблице могут появиться недействительные значения Примечание Свойство AcceptRejectRule принимает значение Cascade либо None, Всем свойствам, представляющим правила, по умолчанию присвоено значение Cascade.