Изменение связей по внешнему ключу

Применимо к: SQL Server 2016 (13.x) и более поздних версий Azure SQL Database Управляемый экземпляр SQL Azure

Вы можете изменить сторону внешнего ключа связи в SQL Server с помощью SQL Server Management Studio или Transact-SQL. При изменении внешнего ключа таблицы изменяются столбцы, связанные со столбцами таблицы первичного ключа.

В этом разделе

Перед началом

Ограничения

Тип данных и размер нового внешнего ключевого столбца должны соответствовать типу данных и размеру связанного с ним первичного ключевого столбца со следующими исключениями.

  • Столбец типа char или sysname можно связать со столбцом типа varchar .

  • Столбец типа binary можно связать со столбцом типа varbinary .

  • Псевдоним типа данных можно связать со своим базовым типом.

Безопасность

Разрешения

Требуется разрешение ALTER на таблицу.

Использование среды SQL Server Management Studio

Изменение внешнего ключа

  1. Разверните в обозревателе объектовтаблицу с внешним ключом, а затем разверните Ключи.

  2. Щелкните правой кнопкой мыши внешний ключ, который нужно изменить, и выберите пункт Изменить.

  3. В диалоговом окне Связи внешних ключей можно внести следующие изменения.

    Выбранные связи
    Выводит список существующих связей. Выберите связь, чтобы ее свойства отобразились в сетке справа. Если этот список пуст, то для этой таблицы не было определено ни одной связи.

    Добавление
    Создает новую связь. Спецификации таблиц и столбцов должны быть заданы, иначе связь будет недопустима.

    Удаление
    Удаляет связь, выбранную в списке Выбранные связи . Чтобы отменить добавление связи, удалите эту связь, нажав данную кнопку.

    Общая категория
    Разверните, чтобы увидеть категории Проверить существующие данные при создании или повторном включении и Спецификации таблиц и столбцов.

    Проверить существующие данные при создании или повторном включении
    Проверяет все существующие данные в таблице перед созданием или возобновлением ограничения относительно этого ограничения.

    Категория спецификации таблиц и столбцов
    Разверните, чтобы увидеть, какие столбцы, из каких таблиц действуют как внешний и первичный (или уникальный) ключ в данной связи. Для изменения или задания этих значений нажмите кнопку с многоточием ( ... ) справа от поля свойства.

    Базовая таблица внешнего ключа
    Показывает, какая таблица содержит столбец, действующий как внешний ключ в выбранной связи.

    Внешние ключевые столбцы
    Показывает, какой столбец действует как внешний ключ в выбранной связи.

    Базовая таблица первичного или уникального ключа
    Показывает, какая таблица содержит столбец, действующий как первичный (или уникальный) ключ в выбранной связи.

    Первичные или уникальные ключевые столбцы
    Показывает, какой столбец действует как первичный (или уникальный) ключ в выбранной связи.

    Категория «Идентификатор»
    Разверните, чтобы увидеть поля свойств Имя и Описание.

    Название
    Показывает имя связи. Если создается новая связь, ей присваивается имя по умолчанию в зависимости от таблицы, отображаемой в активном окне в Конструкторе таблиц. Имя можно изменить в любой момент.

    Описание
    Описывает связь. Чтобы ввести более подробное описание, щелкните Описание и нажмите кнопку с многоточием (...) справа от поля свойства. При этом появится большее поле для записи текста.

    Категория конструктора таблиц
    Разверните, чтобы увидеть данные для категорий Проверка существующих данных при создании и возобновлении и Включить использование для репликации.

    Принудительное применение для репликации
    Показывает, использовать ли данное ограничение, когда агент репликации выполняет в таблице вставку, изменение или удаление.

    Принудительное использование ограничения внешнего ключа
    Укажите, допустимы ли изменения данных столбцов связи, если при этом нарушится целостность связи внешнего ключа. Выберите Да , если нужно запретить такие изменения, и Нет , если нужно разрешить их.

    Категория спецификаций INSERT и UPDATE
    Разверните, чтобы увидеть сведения о Правиле удаления и Правиле обновления связи.

    Удаление правила
    Укажите, что произойдет при попытке пользователя удалить строку с данными, участвующую в связи внешнего ключа:

    • Нет действий. Сообщение об ошибке информирует пользователя, что удаление недопустимо, и инструкция DELETE откатывается.

    • Каскад. Удаляет все строки, содержащие данные, участвующие в связи внешнего ключа. Не следует использовать параметр CASCADE, если таблица будет включена в публикацию слиянием, в которой используются логические записи.

    • Присвоить NULL . Задает значение, равное NULL, если все внешние ключевые столбцы в таблице могут содержать значения NULL.

    • Присвоить значение по умолчанию . Задает значение по умолчанию, определенное для данного столбца, если все внешние ключевые столбцы в таблице имеют значения по умолчанию.

    Правиле обновления
    Укажите, что произойдет при попытке пользователя обновить строку с данными, участвующую в связи внешнего ключа.

    • Нет действий. Сообщение об ошибке информирует пользователя, что обновление недопустимо, и инструкция UPDATE откатывается.

    • Каскад. Обновляет все строки, содержащие данные, участвующие в связи внешнего ключа. Не следует использовать параметр CASCADE, если таблица будет включена в публикацию слиянием, в которой используются логические записи.

    • Присвоить NULL . Задает значение, равное NULL, если все внешние ключевые столбцы в таблице могут содержать значения NULL.

    • Присвоить значение по умолчанию. Задает значение по умолчанию, определенное для данного столбца, если все внешние ключевые столбцы в таблице имеют значения по умолчанию.

  4. В меню Файл выберите команду Сохранитьимя_таблицы.

Использование Transact-SQL

Изменение внешнего ключа

Чтобы изменить ограничение FOREIGN KEY с помощью Transact-SQL, сначала необходимо удалить существующее ограничение FOREIGN KEY, а затем повторно создать его с новым определением. Дополнительные сведения см. в разделах Delete Foreign Key Relationships и Create Foreign Key Relationships.