Изменение связей по внешнему ключу
применяется к: SQL Server 2016 (13.x) и более поздним версиям
базе данных SQL Azure
Управляемому экземпляру SQL Azure
базе данных SQL в Microsoft Fabric
Вы можете изменить сторону внешнего ключа связи в SQL Server с помощью SQL Server Management Studio или Transact-SQL. При изменении внешнего ключа таблицы изменяются столбцы, связанные со столбцами таблицы первичного ключа.
В этом разделе
Перед началом:
Изменение внешнего ключа с использованием следующих средств:
Перед началом
Ограничения и запреты
Тип данных и размер нового внешнего ключевого столбца должны соответствовать типу данных и размеру связанного с ним первичного ключевого столбца со следующими исключениями.
Столбец типа char или sysname можно связать со столбцом типа varchar .
Столбец типа binary можно связать со столбцом типа varbinary .
Псевдоним типа данных может быть связан со своим базовым типом.
Безопасность
Разрешения
Требуется разрешение ALTER на таблицу.
Использование среды SQL Server Management Studio
Изменение внешнего ключа
Разверните в обозревателе объектовтаблицу с внешним ключом, а затем разверните Ключи.
Щелкните правой кнопкой мыши внешний ключ, который нужно изменить, и выберите пункт Изменить.
В диалоговом окне Связи внешних ключей можно внести следующие изменения.
Выбранные отношения
Выводит список существующих связей. Выберите связь, чтобы ее свойства отобразились в сетке справа. Если этот список пуст, то для этой таблицы не было определено ни одной связи.Прибавить
Создайте новую связь. Спецификации таблиц и столбцов должны быть заданы, иначе связь будет недопустима.Удаление
Удаляет связь, выбранную в списке Выбранные связи . Чтобы отменить добавление связи, удалите эту связь, нажав данную кнопку.Общая категория
Разверните, чтобы увидеть Проверка существующих данных при создании или повторном включении и Спецификации таблиц и столбцов.Проверьте существующие данные при создании или повторном включении
Проверьте все существующие данные в таблице на соответствие ограничению до того, как оно было создано или возобновлено.Категория спецификации таблиц и столбцов
Разверните, чтобы увидеть, какие столбцы, из каких таблиц действуют как внешний и первичный (или уникальный) ключ в данной связи. Для изменения или задания этих значений нажмите кнопку с многоточием (...) справа от поля свойства.Базовая таблица внешнего ключа
Показывает, какая таблица содержит столбец, действующий как внешний ключ в выбранной связи.Внешние ключевые столбцы
Показывает, какой столбец действует как внешний ключ в выбранной связи.Базовая таблица первичного или уникального ключа
Показывает, какая таблица содержит столбец, действующий как первичный (или уникальный) ключ в выбранной связи.Первичные или уникальные ключевые столбцы
Показывает, какой столбец действует как первичный (или уникальный) ключ в выбранной связи.Категория личности
Разверните, чтобы увидеть поля свойств Имя и Описание.Имя
Показывает имя отношения. Если создается новая связь, ей присваивается имя по умолчанию в зависимости от таблицы, отображаемой в активном окне в Конструкторе таблиц. Имя можно изменить в любой момент.Description
Опишите связь. Чтобы ввести более подробное описание, щелкните Описание и нажмите кнопку с многоточием (...) справа от поля свойства. При этом появится большее поле для записи текста.Категория конструктора таблиц
Разверните, чтобы показать информацию для Проверить существующие данные при создании или повторном включении и Применить для репликации.Применение требования для репликации
Показывает, использовать ли данное ограничение, когда агент репликации выполняет в таблице вставку, изменение или удаление.Обеспечение ограничения внешнего ключа
Укажите, допустимы ли изменения данных столбцов связи, если при этом нарушится целостность связи внешнего ключа. Выберите Да , если нужно запретить такие изменения, и Нет , если нужно разрешить их.Категория спецификаций INSERT и UPDATE
Разверните, чтобы увидеть сведения о Правиле удаления и Правиле обновления связи.Удалить правило
Укажите, что произойдет при попытке пользователя удалить строку с данными, участвующую в связи внешнего ключа:Нет действий. Сообщение об ошибке информирует пользователя, что удаление недопустимо, и инструкция DELETE откатывается.
Каскад Удаляет все строки, содержащие данные, участвующие во внешней связи ключа. Не следует использовать параметр CASCADE, если таблица будет включена в публикацию слияния, в которой используются логические записи.
Присвоить NULL . Задает значение, равное NULL, если все внешние ключевые столбцы в таблице могут содержать значения NULL.
Присвоить значение по умолчанию . Задает значение по умолчанию, определенное для данного столбца, если все внешние ключевые столбцы в таблице имеют значения по умолчанию.
Правиле обновления
Укажите, что произойдет при попытке пользователя обновить строку с данными, участвующую в связи внешнего ключа.Нет действий. Сообщение об ошибке информирует пользователя, что обновление недопустимо, и инструкция UPDATE откатывается.
Каскад Обновляет все строки, включающие данные, вовлечённые во внешние ключевые связи. Не следует использовать опцию CASCADE, если таблица будет включена в публикацию объединения, в которой используются логические записи.
Присвоить NULL . Задает значение, равное NULL, если все внешние ключевые столбцы в таблице могут содержать значения NULL.
Присвоить значение по умолчанию. Задает значение по умолчанию, определенное для данного столбца, если все внешние ключевые столбцы в таблице имеют значения по умолчанию.
В меню Файл выберите пункт Сохранитьtable name.
Использование Transact-SQL
Изменение внешнего ключа
Чтобы изменить ограничение FOREIGN KEY с помощью Transact-SQL, сначала необходимо удалить существующее ограничение FOREIGN KEY, а затем повторно создать его с новым определением. Дополнительные сведения см. в разделах Удаление связей внешнего ключа и Создание связей внешнего ключа.