Общие сведения о ссылочной целостности
Ссылочная целостность представляет собой систему правил, обеспечивающих допустимость связей между строками связанных таблиц и предотвращающих случайное удаление или изменение данных.
Примечание |
---|
Новая версия конструктора таблиц отображается для баз данных в формате SQL Server 2012. В этом разделе описывается старая версия конструктора таблиц, которая используется с базами данных в более ранних форматах SQL Server. В новой версии определение таблицы можно изменить через графический интерфейс или непосредственно в области скриптов. Если вы используется графический интерфейс, определение таблицы автоматически обновляется в области скриптов. Чтобы применить код SQL в области скриптов, нажмите кнопку Обновить. Дополнительные сведения о новой версии см. в разделе Как создавать объекты базы данных с помощью конструктора таблиц. |
Процедура
Ссылочная целостность подразумевает выполнение всех приведенных ниже условий:
Совпадающий столбец первичной таблицы является первичным ключом или имеет ограничение уникальности.
Связанные столбцы внешней таблицы имеют тот же тип и размер.
Для обеспечения ссылочной целостности необходимо соблюдение следующих правил:
В столбце внешнего ключа связанной таблицы можно вводить только значения, существующие в ее первичном ключе.В столбце внешнего ключа можно также задать значение NULL.Например, невозможно указать, что задание выдано сотруднику, для которого нет данных в таблице employee, но при этом можно указать, что определенному сотруднику задание не выдано. Для этого необходимо задать в столбце job_id таблицы employee пустое значение.
Прежде, чем удалять строку из таблицы первичного ключа, необходимо удалить совпадающие с ней строки из связанной таблицы.Например, нельзя удалить строку из таблицы jobs, если задание, представляемое данной строкой, задействует сотрудников, перечисленных в таблице employee.
В случае, когда строка связана с другими строками таблицы, значение первичного ключа таблицы не может быть изменено.Например, нельзя изменить значение job_id строки в таблице jobs, если в таблице employee существуют связанные с этим job_id сотрудники.
См. также
Ссылки
Диалоговое окно "Связи по внешним ключам"