Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 删除SQL中的数据_Sql Server - Fatal编程技术网

Sql server 删除SQL中的数据

Sql server 删除SQL中的数据,sql-server,Sql Server,我的问题是关于删除数据库中的数据。我的数据库有4个表: 类别 话题 副标题 项目 主题表有一个外键(CategoryID),它引用了类别表 子主题表有一个外键(TopicID),它引用了主题表 项表有一个外键(子主题ID),它引用了子主题表 我想知道当我想删除一个类别时我该怎么做?非常感谢你 如果要删除相关表中的所有依赖行,可以执行级联删除。级联删除将从父表以及子表中删除该行。如果需要自动删除多级中的所有关系,请为数据库搜索“cascade all”语法 如果您在删除级联上有,如果您删除一个

我的问题是关于删除数据库中的数据。我的数据库有4个表:

  • 类别
  • 话题
  • 副标题
  • 项目

  • 主题
    表有一个外键(
    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
就不会自动产生可怕的后果。