Целостность данных
Рассмотрим возможные действия программы Visual FoxPro при изменении значения первичного ключа или ключа типа Candidate (Кандидат) в родительской таблице в зависимости от используемой опции (табл. 4.11.).
Таблица 4.11. Описание действий Visual FoxPro в зависимости от выбранной опции при изменении значения первичного ключа или ключа типа Candidate.
| Наименование опции | Описание | 
|---|---|
| Cascade (Каскадное изменение) | При изменении значений полей первичного ключа или ключа-кандидата в родительской таблице, автоматически осуществляется каскадное изменение всех соответствующих значений в дочерней таблице. Например, если это правило применить к отношению между таблицами Customer и Ordsalem, при изменении кода клиента в таблице Customer автоматически будут изменены коды и в Таблице Ordsalem | 
| Restrict (Запрет изменения) | Не позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на изменяемую запись. Данное правило также можно применить к отношению между таблицами Customer и Ordsalem, если в создаваемом приложении коды клиента определяются на этапе ввода нового клиента и в дальнейшем не редактируются | 
| Ignore (Игнорировать) | Позволяет изменять значения полей первичного ключа или ключа-кандидата в родительской таблице независимо от существования связанных записей в дочерней таблице. Целостность данных при этом не поддерживается | 
При удалении записи из родительской таблицы возможны следующие действия программы Visual FoxPro в зависимости от установленной в диалоговом окне Referential Integrity Builder (Построитель целостности данных) опции (табл. 4.12).
Таблица 4.12. Описание действий Visual FoxPro, в зависимости от выбранной опции, при удалении записи из родительской таблицы.
| Наименование опции | Описание | 
|---|---|
| Cascade (Изменять каскадно) | При удалении записи из родительской таблицы автоматически осуществляется каскадное удаление всех записей из дочерней таблицы, связанных с удаляемой записью | 
| Restrict (Ограничивать) | Не позволяет удалять записи в родительской таблице, если в дочерней таблице имеется хотя бы одна запись, содержащая ссылку на удаляемую запись. При попытке удаления записи возникает ошибка, которую вы можете обработать программно | 
| Ignore (Игнорировать) | Позволяет удалять записи в родительской таблице независимо от существования связанных записей в дочерней таблице. Очевидно, что целостность данных при этом не поддерживается | 
