Изменение связей по внешнему ключу
Изменить сторону внешнего ключа связи в 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
Изменение внешнего ключа
Разверните в обозревателе объектов таблицу с внешним ключом, а затем разверните Ключи.
Щелкните правой кнопкой мыши внешний ключ, который нужно изменить, и выберите пункт Изменить.
В диалоговом окне Связи внешних ключей можно внести следующие изменения.
Выбранные связи
Выводит список существующих связей. Выберите связь, чтобы ее свойства отобразились в сетке справа. Если этот список пуст, то для этой таблицы не было определено ни одной связи.Добавить
Создает новую связь. Спецификации таблиц и столбцов должны быть заданы, иначе связь будет недопустима.Удалить
Удаляет связь, выбранную в списке Выбранные связи. Чтобы отменить добавление связи, удалите эту связь, нажав данную кнопку.Общая категория
Разверните, чтобы увидеть категории Проверить существующие данные при создании или повторном включении и Спецификации таблиц и столбцов.Проверка существующих данных при создании и возобновлении
Проверяет все существующие данные в таблице перед созданием или возобновлением ограничения относительно этого ограничения.Категория спецификации таблиц и столбцов
Разверните, чтобы увидеть, какие столбцы, из каких таблиц действуют как внешний и первичный (или уникальный) ключ в данной связи. Для изменения или задания этих значений нажмите кнопку с многоточием (…) справа от поля свойства.Базовая таблица внешнего ключа
Показывает, какая таблица содержит столбец, действующий как внешний ключ в выбранной связи.Внешние ключевые столбцы
Показывает, какой столбец действует как внешний ключ в выбранной связи.Базовая таблица первичного или уникального ключа
Показывает, какая таблица содержит столбец, действующий как первичный (или уникальный) ключ в выбранной связи.Первичные или уникальные ключевые столбцы
Показывает, какой столбец действует как первичный (или уникальный) ключ в выбранной связи.Категория идентификаторов
Разверните, чтобы увидеть поля свойств Имя и Описание.Название
Показывает имя связи. Если создается новая связь, ей присваивается имя по умолчанию в зависимости от таблицы, отображаемой в активном окне в Конструкторе таблиц. Это имя всегда можно изменить.Описание
Описывает связь. Чтобы ввести более подробное описание, щелкните Описание и нажмите кнопку с многоточием (...) справа от поля свойства. При этом появится большее поле для записи текста.Категория конструктора таблиц
Разверните, чтобы увидеть данные для категорий Проверка существующих данных при создании и возобновлении и Включить использование для репликации.Принудительное использование для репликации
Показывает, использовать ли данное ограничение, когда агент репликации выполняет в таблице вставку, изменение или удаление.Принудительное использование ограничения внешнего ключа
Укажите, допустимы ли изменения данных столбцов связи, если при этом нарушится целостность связи внешнего ключа. Выберите Да, если нужно запретить такие изменения, и Нет, если нужно разрешить их.Категория спецификаций INSERT и UPDATE
Разверните, чтобы увидеть сведения о Правиле удаления и Правиле обновления связи.Правило удаления
Укажите, что произойдет при попытке пользователя удалить строку с данными, участвующую в связи внешнего ключа:Нет действий. Сообщение об ошибке информирует пользователя, что удаление недопустимо, и инструкция DELETE откатывается.
Каскад. Удаляет все строки, содержащие данные, участвующие в связи внешнего ключа. Не следует использовать параметр CASCADE, если таблица будет включена в публикацию слиянием, в которой используются логические записи.
Присвоить NULL. Задает значение, равное NULL, если все внешние ключевые столбцы в таблице могут содержать значения NULL.
Присвоить значение по умолчанию. Задает значение по умолчанию, определенное для данного столбца, если все внешние ключевые столбцы в таблице имеют значения по умолчанию.
Правило обновления
Укажите, что произойдет при попытке пользователя обновить строку с данными, участвующую в связи внешнего ключа.Нет действий. Сообщение об ошибке информирует пользователя, что обновление недопустимо, и инструкция UPDATE откатывается.
Каскад. Обновляет все строки, содержащие данные, участвующие в связи внешнего ключа. Не следует использовать параметр CASCADE, если таблица будет включена в публикацию слиянием, в которой используются логические записи.
Присвоить NULL. Задает значение, равное NULL, если все внешние ключевые столбцы в таблице могут содержать значения NULL.
Присвоить значение по умолчанию. Задает значение по умолчанию, определенное для данного столбца, если все внешние ключевые столбцы в таблице имеют значения по умолчанию.
В разделе Файл выберите пункт Сохранить table name.
[Top]
Использование Transact-SQL
Изменение внешнего ключа
Чтобы изменить ограничение FOREIGN KEY с помощью Transact-SQL, сначала необходимо удалить существующее ограничение FOREIGN KEY, а затем повторно создать его с новым определением. Дополнительные сведения см. в разделах Удаление связей по внешнему ключу и Создание связей по внешнему ключу.
[Top]