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