Поделиться через


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

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

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

  • Перед началом работы выполните следующие действия.

    Ограничения

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

  • Изменение внешнего ключа с использованием следующих средств:

    Среда SQL Server Management Studio

    Transact-SQL

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

Ограничения

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

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

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

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

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

Разрешения

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

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  4. В разделе Файл выберите пункт Сохранить table name.

Значок стрелки, используемый со ссылкой «В начало»[Top]

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

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

Чтобы изменить ограничение FOREIGN KEY с помощью Transact-SQL, сначала необходимо удалить существующее ограничение FOREIGN KEY, а затем повторно создать его с новым определением. Дополнительные сведения см. в разделах Удаление связей по внешнему ключу и Создание связей по внешнему ключу.

Значок стрелки, используемый со ссылкой «В начало»[Top]