Как мне отредактировать таблицу, чтобы включить CASCADE DELETE? - PullRequest
23 голосов
/ 16 декабря 2010

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

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

Очевидно, что CASCADE DELETE не так просто, как я представлял в SQL Server, и этот параметр необходимо добавить в таблицу.

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

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

Ответы [ 3 ]

27 голосов
/ 16 декабря 2010

Сначала прочтите эту статью Microsoft. Read Me . Я использую GUI во время проектирования, так что здесь картина того, как он выбран в SSMS. alt text Синтаксис, добавленный к внешнему ключу: «ON DELETE CASCADE»

17 голосов
/ 16 декабря 2010

Google ALTER TABLE DROP CONSTRAINT, затем ALTER TABLE ADD CONSTRAINT:

ALTER TABLE

Вот краткий пример:

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;
15 голосов
/ 09 марта 2016

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

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

Drop and Create

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

On delete cascade

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

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

...