如何编辑表以启用CASCADE DELETE?

时间:2010-12-15 21:03:45

标签: sql sql-server sql-server-2008 cascading-deletes

我有一个代表用户的表。当用户被删除时,我得到:

  

DELETE语句与REFERENCE约束冲突

显然,CASCADE DELETE并不像我在SQL Server中想象的那么容易,并且需要将该选项添加到表中。

问题是:我无法弄清楚如何添加CASCADE DELETE选项。

我正在使用: SQL Server 2008 。任何想法如何做到这一点?

3 个答案:

答案 0 :(得分:27)

首先阅读这篇Microsoft文章。 Read Me。我在设计过程中使用GUI,所以这里是SSMS中如何选择它的图片。 alt text 添加到外键的语法是“ON DELETE CASCADE”

答案 1 :(得分: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;

答案 2 :(得分:15)

以下是我将“级联删除”功能添加到 SQL Server Management Studio 中的现有外键的方法。

首先,找到你的外键,然后在新的查询窗口中打开它“DROP and CREATE TO”。

Drop and Create

然后,只需将“ON DELETE CASCADE”添加到“ADD CONSTRAINT”命令:

On delete cascade

然后点击“执行”按钮运行查询。

完成工作!