Как мне отредактировать таблицу, чтобы включить КАСКАДНОЕ УДАЛЕНИЕ?
-
10-10-2019 - |
Вопрос
У меня есть таблица, представляющая пользователей.Когда пользователь удаляется, я получаю:
Оператор DELETE конфликтует с ограничением ССЫЛКИ
Очевидно, CASCADE DELETE
это не так просто, как я себе представлял в SQL Server, и эту опцию необходимо добавить в таблицу.
Проблема в том, что:Я не могу понять, как добавить CASCADE DELETE
вариант.
Я использую: SQL Server 2008.Есть какие-нибудь идеи, как это сделать?
Решение
Сначала прочтите эту статью Microsoft. Прочти Меня.Я использую графический интерфейс при проектировании, поэтому вот изображение того, как он выбирается в SSMS.
Синтаксис , добавленный к внешнему ключу , - " ПРИ КАСКАДНОМ УДАЛЕНИИ " .
Другие советы
Google ALTER TABLE DROP CONSTRAINT
, тогда ALTER TABLE ADD CONSTRAINT
:
Вот краткий пример:
CREATE TABLE A
(
ID INTEGER NOT NULL UNIQUE
);
CREATE TABLE B
(
ID INTEGER NOT NULL UNIQUE
CONSTRAINT fk__B__A
REFERENCES A (ID)
);
-- Oops! Forgot the CASCADE referential actions.
-- DROP the constraint then recreate it:
ALTER TABLE B DROP
CONSTRAINT fk__B__A;
ALTER TABLE B ADD
CONSTRAINT fk__B__A
FOREIGN KEY (ID)
REFERENCES A (ID)
ON DELETE CASCADE
ON UPDATE CASCADE;
Вот как я бы добавил функцию "каскадного удаления" в существующий внешний ключ в Студия управления SQL Server.
Сначала найдите свой внешний ключ и откройте его "УДАЛИТЬ и СОЗДАТЬ В" в новом окне запроса.
Затем просто добавьте "ON DELETE CASCADE
" к тому самому "ADD CONSTRAINT
" команда:
Затем просто нажмите кнопку "Выполнить", чтобы запустить запрос.
Работа выполнена !