Sql server 删除SQL中的数据
我的问题是关于删除数据库中的数据。我的数据库有4个表:Sql server 删除SQL中的数据,sql-server,Sql Server,我的问题是关于删除数据库中的数据。我的数据库有4个表: 类别 话题 副标题 项目 主题表有一个外键(CategoryID),它引用了类别表 子主题表有一个外键(TopicID),它引用了主题表 项表有一个外键(子主题ID),它引用了子主题表 我想知道当我想删除一个类别时我该怎么做?非常感谢你 如果要删除相关表中的所有依赖行,可以执行级联删除。级联删除将从父表以及子表中删除该行。如果需要自动删除多级中的所有关系,请为数据库搜索“cascade all”语法 如果您在删除级联上有,如果您删除一个
- 类别
- 话题
- 副标题
- 项目
表有一个外键(主题
),它引用了CategoryID
表类别
表有一个外键(子主题
),它引用了TopicID
表主题
表有一个外键(项
),它引用了子主题ID
表子主题
我想知道当我想删除一个类别时我该怎么做?非常感谢你 如果要删除相关表中的所有依赖行,可以执行级联删除。级联删除将从父表以及子表中删除该行。如果需要自动删除多级中的所有关系,请为数据库搜索“cascade all”语法 如果您在删除级联上有
,
如果您删除一个类别,它将删除所有引用该类别的主题,反过来,所有引用已删除主题的子主题都将被删除。物品也一样
如果在其中一个表上有
on delete restrict
,则会出现一个错误,说明由于引用限制,无法删除类别
您可以使用适当的sql语句或从dbms用户界面更改级联行为。如果我读对了您的理解(英文不清晰、不清晰),您将不得不删除
项
、子主题
和主题
表中的数据,这些表最终指向您的类别
表的引用。或者,您必须删除引用。Cascade
将在您删除表类别中的内容时起作用。子级上引用表类别的所有记录也将被删除
下面是一个简单的例子来定义它
ALTER TABLE Courses
ADD FOREIGN KEY (CategoryId)
REFERENCES Categories(CategoryPK)
ON DELETE CASCADE;
疑惑的???什么事情没有按照您的期望发生?删除是一个问题吗?知道category
是父表删除类别时您希望看到什么我想知道的是,当我删除一个类别时,我应该删除子表的每个数据,或者在创建子表时使用“on delete cascade”。通常,我避免了级联删除。相反,我创建了一个存储过程来处理以正确的顺序删除特定项(例如类别)的所有适当数据。这样,在SSMS中发布的临时delete
就不会自动产生可怕的后果。