Как отредактировать таблицу, чтобы включить CASCADE DELETE?

У меня есть таблица, представляющая пользователей. Когда пользователь удаляется, я получаю:

Оператор DELETE конфликтует с ограничением REFERENCE.

Судя по всему, CASCADE DELETE не так просто, как я себе представлял в SQL Server, и опцию нужно добавить в таблицу.

Проблема в том, что я не могу понять, как добавить опцию CASCADE DELETE.

Я использую: SQL Server 2008. Любые идеи, как это сделать?


person RadiantHex    schedule 15.12.2010    source источник


Ответы (3)


Сначала прочтите эту статью Microsoft. Прочитайте меня. Я использую графический интерфейс во время проектирования, поэтому вот изображение того, как он выбирается в SSMS. alt textВо внешний ключ добавляется синтаксис "ON DELETE CASCADE"

person RC_Cleland    schedule 15.12.2010

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;
person Mr. TA    schedule 15.12.2010
comment
Я думаю, что RadiantHex означает, что RadiantHex хочет удалить строки, связанные с ограничением, используя каскадное удаление, а не удалять ограничения, поэтому строки могут быть удалены. - person Mark Schultheiss; 16.12.2010
comment
@Mark Schultheiss: Я думаю, что г-н ТА имеет в виду, что г-н ТА предполагает, что ограничение не может быть изменено (т. Е. Нет синтаксиса ALTER TABLE..ALTER CONSTRAINT), а ограничение должно быть удалено, а затем воссоздано. Я добавил пример для ясности. - person onedaywhen; 16.12.2010

Вот как я могу добавить функцию "каскадного удаления" к существующему внешнему ключу в SQL Server Management Studio.

Сначала найдите свой внешний ключ и откройте его «DROP and CREATE To» в новом окне запроса.

Бросьте и создайте

Затем просто добавьте «ON DELETE CASCADE» к команде «ADD CONSTRAINT»:

При каскадном удалении

Затем просто нажмите кнопку «Выполнить», чтобы запустить запрос.

Работа выполнена !

person Mike Gledhill    schedule 09.03.2016