如何编辑表以启用CASCADE DELETE?

Rad*_*Hex 25 sql sql-server sql-server-2008 cascading-deletes

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

DELETE语句与REFERENCE约束冲突

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

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

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

RC_*_*and 28

首先阅读这篇Microsoft文章.自述.我在设计过程中使用GUI,所以这里是SSMS中如何选择它的图片. 替代文字 添加到外键的语法是"ON DELETE CASCADE"


Mr.*_* TA 17

谷歌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;
Run Code Online (Sandbox Code Playgroud)

  • @Mark Schultheiss:我认为TA先生的意思是TA先生建议约束不能改变(即没有'ALTER TABLE..ALTER CONSTRAINT`语法),而是必须删除约束然后重新创建.为清晰起见,我添加了一个示例. (4认同)

Mik*_*ill 15

这是我将"级联删除"功能添加到SQL Server Management Studio中现有外键的方法.

首先,找到您的外键,并在新的Query窗口中打开它"DROP and CREATE TO".

删除和创建

然后,只需ON DELETE CASCADE在" ADD CONSTRAINT"命令中添加" " :

在删除级联

然后点击"执行"按钮运行查询.

任务完成 !