2010-12-15 3 views
18

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

ВЕИТ конфликтное с ссылочным ограничением

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

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

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

ответ

25

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

17

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; 
+1

Я думаю, что RadiantHex означает, что RadiantHex хочет удалить строки, связанные с ограничением, используя каскадные удаления, не отбрасывая ограничения, чтобы строки могли быть удалены. – 2010-12-15 21:09:41

9

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

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

Drop and Create

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

On delete cascade

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

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